Changeset 603c1d1f in mainline for uspace/srv/bd


Ignore:
Timestamp:
2015-07-05T18:53:00Z (10 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
bf7ddde
Parents:
99c23405
Message:

Persistent partition table creation and destruction.

Location:
uspace/srv/bd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/part/guid_part/guid_part.c

    r99c23405 r603c1d1f  
    250250        }
    251251
    252         rc = block_read_direct(indev_sid, GPT_HDR_BA, 1, gpt_hdr);
     252        rc = block_read_direct(indev_sid, gpt_hdr_ba, 1, gpt_hdr);
    253253        if (rc != EOK) {
    254254                printf(NAME ": Failed reading GPT header block.\n");
  • uspace/srv/bd/vbd/disk.c

    r99c23405 r603c1d1f  
    223223        }
    224224
     225        log_msg(LOG_DEFAULT, LVL_NOTE, "block_init(%zu)", sid);
    225226        rc = block_init(EXCHANGE_SERIALIZE, sid, 2048);
    226227        if (rc != EOK) {
     
    272273error:
    273274        label_close(label);
    274         if (block_inited)
     275        if (block_inited) {
     276                log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid);
    275277                block_fini(sid);
     278        }
    276279        if (disk != NULL)
    277280                free(disk->svc_name);
     
    293296        list_remove(&disk->ldisks);
    294297        label_close(disk->label);
     298        log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid);
     299        block_fini(sid);
    295300        free(disk);
    296301        return EOK;
     
    353358        label_t *label;
    354359        vbds_disk_t *disk;
     360        bool block_inited = false;
     361        size_t block_size;
    355362        int rc;
    356363
    357364        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu)", sid);
     365
     366        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - chkdup", sid);
    358367
    359368        /* Check for duplicates */
     
    362371                return EEXISTS;
    363372
     373        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - alloc", sid);
     374
    364375        disk = calloc(1, sizeof(vbds_disk_t));
    365376        if (disk == NULL)
    366377                return ENOMEM;
    367378
     379        rc = loc_service_get_name(sid, &disk->svc_name);
     380        if (rc != EOK) {
     381                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting disk service name.");
     382                rc = EIO;
     383                goto error;
     384        }
     385
     386        log_msg(LOG_DEFAULT, LVL_NOTE, "block_init(%zu)", sid);
     387        rc = block_init(EXCHANGE_SERIALIZE, sid, 2048);
     388        if (rc != EOK) {
     389                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed opening block device %s.",
     390                    disk->svc_name);
     391                rc = EIO;
     392                goto error;
     393        }
     394
     395        rc = block_get_bsize(sid, &block_size);
     396        if (rc != EOK) {
     397                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed getting block size of %s.",
     398                    disk->svc_name);
     399                rc = EIO;
     400                goto error;
     401        }
     402
     403        block_inited = true;
     404
     405        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - label_create", sid);
     406
    368407        rc = label_create(sid, ltype, &label);
    369408        if (rc != EOK)
     
    372411        disk->svc_id = sid;
    373412        disk->label = label;
     413        disk->block_size = block_size;
     414        list_initialize(&disk->parts);
     415
    374416        list_append(&disk->ldisks, &vbds_disks);
     417
     418        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - success", sid);
    375419        return EOK;
    376420error:
     421        log_msg(LOG_DEFAULT, LVL_NOTE, "vbds_label_create(%zu) - failure", sid);
     422        if (block_inited) {
     423                log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid);
     424                block_fini(sid);
     425        }
     426        if (disk != NULL)
     427                free(disk->svc_name);
    377428        free(disk);
    378429        return rc;
     
    397448
    398449        list_remove(&disk->ldisks);
     450        log_msg(LOG_DEFAULT, LVL_NOTE, "block_fini(%zu)", sid);
     451        block_fini(sid);
    399452        free(disk);
    400453        return EOK;
Note: See TracChangeset for help on using the changeset viewer.