Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/vbd/disk.c

    rb7fd2a0 r5772aa1  
    3838#include <block.h>
    3939#include <errno.h>
    40 #include <str_error.h>
    4140#include <io/log.h>
    4241#include <label/empty.h>
     
    5857static category_id_t part_cid;
    5958
    60 static errno_t vbds_disk_parts_add(vbds_disk_t *, label_t *);
    61 static errno_t vbds_disk_parts_remove(vbds_disk_t *, vbds_rem_flag_t);
    62 
    63 static errno_t vbds_bd_open(bd_srvs_t *, bd_srv_t *);
    64 static errno_t vbds_bd_close(bd_srv_t *);
    65 static errno_t vbds_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t);
    66 static errno_t vbds_bd_sync_cache(bd_srv_t *, aoff64_t, size_t);
    67 static errno_t vbds_bd_write_blocks(bd_srv_t *, aoff64_t, size_t, const void *,
     59static int vbds_disk_parts_add(vbds_disk_t *, label_t *);
     60static int vbds_disk_parts_remove(vbds_disk_t *, vbds_rem_flag_t);
     61
     62static int vbds_bd_open(bd_srvs_t *, bd_srv_t *);
     63static int vbds_bd_close(bd_srv_t *);
     64static int vbds_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t);
     65static int vbds_bd_sync_cache(bd_srv_t *, aoff64_t, size_t);
     66static int vbds_bd_write_blocks(bd_srv_t *, aoff64_t, size_t, const void *,
    6867    size_t);
    69 static errno_t vbds_bd_get_block_size(bd_srv_t *, size_t *);
    70 static errno_t vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *);
    71 
    72 static errno_t vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *);
    73 
    74 static errno_t vbds_part_svc_register(vbds_part_t *);
    75 static errno_t vbds_part_svc_unregister(vbds_part_t *);
    76 static errno_t vbds_part_indices_update(vbds_disk_t *);
     68static int vbds_bd_get_block_size(bd_srv_t *, size_t *);
     69static int vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *);
     70
     71static int vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *);
     72
     73static int vbds_part_svc_register(vbds_part_t *);
     74static int vbds_part_svc_unregister(vbds_part_t *);
     75static int vbds_part_indices_update(vbds_disk_t *);
    7776
    7877static vbd_part_id_t vbds_part_id = 1;
    7978
    80 static errno_t vbds_label_get_bsize(void *, size_t *);
    81 static errno_t vbds_label_get_nblocks(void *, aoff64_t *);
    82 static errno_t vbds_label_read(void *, aoff64_t, size_t, void *);
    83 static errno_t vbds_label_write(void *, aoff64_t, size_t, const void *);
     79static int vbds_label_get_bsize(void *, size_t *);
     80static int vbds_label_get_nblocks(void *, aoff64_t *);
     81static int vbds_label_read(void *, aoff64_t, size_t, void *);
     82static int vbds_label_write(void *, aoff64_t, size_t, const void *);
    8483
    8584/** Block device operations provided by VBD */
     
    132131}
    133132
    134 errno_t vbds_disks_init(void)
    135 {
    136         errno_t rc;
     133int vbds_disks_init(void)
     134{
     135        int rc;
    137136
    138137        fibril_mutex_initialize(&vbds_disks_lock);
     
    152151
    153152/** Check for new/removed disk devices */
    154 static errno_t vbds_disks_check_new(void)
     153static int vbds_disks_check_new(void)
    155154{
    156155        bool already_known;
     
    159158        size_t count, i;
    160159        vbds_disk_t *cur, *next;
    161         errno_t rc;
     160        int rc;
    162161
    163162        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disks_check_new()");
     
    229228
    230229
    231 static errno_t vbds_disk_by_svcid(service_id_t sid, vbds_disk_t **rdisk)
     230static int vbds_disk_by_svcid(service_id_t sid, vbds_disk_t **rdisk)
    232231{
    233232        list_foreach(vbds_disks, ldisks, vbds_disk_t, disk) {
     
    256255}
    257256
    258 static errno_t vbds_part_by_pid(vbds_part_id_t partid, vbds_part_t **rpart)
     257static int vbds_part_by_pid(vbds_part_id_t partid, vbds_part_t **rpart)
    259258{
    260259        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_by_pid(%zu)", partid);
     
    278277}
    279278
    280 static errno_t vbds_part_by_svcid(service_id_t svcid, vbds_part_t **rpart)
     279static int vbds_part_by_svcid(service_id_t svcid, vbds_part_t **rpart)
    281280{
    282281        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_by_svcid(%zu)", svcid);
     
    301300
    302301/** Add partition to our inventory based on liblabel partition structure */
    303 static errno_t vbds_part_add(vbds_disk_t *disk, label_part_t *lpart,
     302static int vbds_part_add(vbds_disk_t *disk, label_part_t *lpart,
    304303    vbds_part_t **rpart)
    305304{
     
    307306        service_id_t psid = 0;
    308307        label_part_info_t lpinfo;
    309         errno_t rc;
     308        int rc;
    310309
    311310        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_add(%s, %p)",
     
    362361 *
    363362 */
    364 static errno_t vbds_part_remove(vbds_part_t *part, vbds_rem_flag_t flag,
     363static int vbds_part_remove(vbds_part_t *part, vbds_rem_flag_t flag,
    365364    label_part_t **rlpart)
    366365{
    367366        label_part_t *lpart;
    368         errno_t rc;
     367        int rc;
    369368
    370369        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_remove(%p)", part);
     
    404403/** Remove all disk partitions from our inventory leaving only the underlying
    405404 * liblabel partition structures. */
    406 static errno_t vbds_disk_parts_add(vbds_disk_t *disk, label_t *label)
     405static int vbds_disk_parts_add(vbds_disk_t *disk, label_t *label)
    407406{
    408407        label_part_t *part;
    409         errno_t rc;
     408        int rc;
    410409
    411410        part = label_part_first(label);
     
    426425/** Remove all disk partitions from our inventory leaving only the underlying
    427426 * liblabel partition structures. */
    428 static errno_t vbds_disk_parts_remove(vbds_disk_t *disk, vbds_rem_flag_t flag)
     427static int vbds_disk_parts_remove(vbds_disk_t *disk, vbds_rem_flag_t flag)
    429428{
    430429        link_t *link;
    431430        vbds_part_t *part;
    432         errno_t rc;
     431        int rc;
    433432
    434433        link = list_first(&disk->parts);
     
    450449}
    451450
    452 errno_t vbds_disk_discovery_start(void)
    453 {
    454         errno_t rc;
     451int vbds_disk_discovery_start(void)
     452{
     453        int rc;
    455454
    456455        rc = loc_register_cat_change_cb(vbds_disk_cat_change_cb);
    457456        if (rc != EOK) {
    458457                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering callback "
    459                     "for disk discovery: %s.", str_error(rc));
     458                    "for disk discovery (%d).", rc);
    460459                return rc;
    461460        }
     
    464463}
    465464
    466 errno_t vbds_disk_add(service_id_t sid)
     465int vbds_disk_add(service_id_t sid)
    467466{
    468467        label_t *label = NULL;
     
    472471        size_t block_size;
    473472        aoff64_t nblocks;
    474         errno_t rc;
     473        int rc;
    475474
    476475        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_add(%zu)", sid);
     
    557556}
    558557
    559 errno_t vbds_disk_remove(service_id_t sid)
     558int vbds_disk_remove(service_id_t sid)
    560559{
    561560        vbds_disk_t *disk;
    562         errno_t rc;
     561        int rc;
    563562
    564563        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_remove(%zu)", sid);
     
    583582
    584583/** Get list of disks as array of service IDs. */
    585 errno_t vbds_disk_get_ids(service_id_t *id_buf, size_t buf_size, size_t *act_size)
     584int vbds_disk_get_ids(service_id_t *id_buf, size_t buf_size, size_t *act_size)
    586585{
    587586        size_t act_cnt;
     
    611610}
    612611
    613 errno_t vbds_disk_info(service_id_t sid, vbd_disk_info_t *info)
     612int vbds_disk_info(service_id_t sid, vbd_disk_info_t *info)
    614613{
    615614        vbds_disk_t *disk;
    616615        label_info_t linfo;
    617         errno_t rc;
     616        int rc;
    618617
    619618        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_info(%zu)", sid);
     
    638637}
    639638
    640 errno_t vbds_get_parts(service_id_t sid, service_id_t *id_buf, size_t buf_size,
     639int vbds_get_parts(service_id_t sid, service_id_t *id_buf, size_t buf_size,
    641640    size_t *act_size)
    642641{
     
    644643        size_t act_cnt;
    645644        size_t buf_cnt;
    646         errno_t rc;
     645        int rc;
    647646
    648647        rc = vbds_disk_by_svcid(sid, &disk);
     
    668667}
    669668
    670 errno_t vbds_label_create(service_id_t sid, label_type_t ltype)
     669int vbds_label_create(service_id_t sid, label_type_t ltype)
    671670{
    672671        label_t *label;
     
    674673        label_info_t linfo;
    675674        vbds_disk_t *disk;
    676         errno_t rc, rc2;
     675        int rc, rc2;
    677676
    678677        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_create(%zu)", sid);
     
    739738}
    740739
    741 errno_t vbds_label_delete(service_id_t sid)
     740int vbds_label_delete(service_id_t sid)
    742741{
    743742        vbds_disk_t *disk;
    744743        label_t *label;
    745744        label_bd_t lbd;
    746         errno_t rc;
     745        int rc;
    747746
    748747        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_delete(%zu)", sid);
     
    781780}
    782781
    783 errno_t vbds_part_get_info(vbds_part_id_t partid, vbd_part_info_t *pinfo)
     782int vbds_part_get_info(vbds_part_id_t partid, vbd_part_info_t *pinfo)
    784783{
    785784        vbds_part_t *part;
    786785        label_part_info_t lpinfo;
    787         errno_t rc;
     786        int rc;
    788787
    789788        rc = vbds_part_by_pid(partid, &part);
     
    810809}
    811810
    812 errno_t vbds_part_create(service_id_t sid, vbd_part_spec_t *pspec,
     811int vbds_part_create(service_id_t sid, vbd_part_spec_t *pspec,
    813812    vbds_part_id_t *rpart)
    814813{
     
    817816        label_part_spec_t lpspec;
    818817        label_part_t *lpart;
    819         errno_t rc;
     818        int rc;
    820819
    821820        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_create(%zu)", sid);
     
    879878}
    880879
    881 errno_t vbds_part_delete(vbds_part_id_t partid)
     880int vbds_part_delete(vbds_part_id_t partid)
    882881{
    883882        vbds_part_t *part;
    884883        vbds_disk_t *disk;
    885884        label_part_t *lpart;
    886         errno_t rc;
     885        int rc;
    887886
    888887        rc = vbds_part_by_pid(partid, &part);
     
    918917}
    919918
    920 errno_t vbds_suggest_ptype(service_id_t sid, label_pcnt_t pcnt,
     919int vbds_suggest_ptype(service_id_t sid, label_pcnt_t pcnt,
    921920    label_ptype_t *ptype)
    922921{
    923922        vbds_disk_t *disk;
    924         errno_t rc;
     923        int rc;
    925924
    926925        rc = vbds_disk_by_svcid(sid, &disk);
     
    942941}
    943942
    944 static errno_t vbds_bd_open(bd_srvs_t *bds, bd_srv_t *bd)
     943static int vbds_bd_open(bd_srvs_t *bds, bd_srv_t *bd)
    945944{
    946945        vbds_part_t *part = bd_srv_part(bd);
     
    953952}
    954953
    955 static errno_t vbds_bd_close(bd_srv_t *bd)
     954static int vbds_bd_close(bd_srv_t *bd)
    956955{
    957956        vbds_part_t *part = bd_srv_part(bd);
     
    967966}
    968967
    969 static errno_t vbds_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
     968static int vbds_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
    970969    void *buf, size_t size)
    971970{
    972971        vbds_part_t *part = bd_srv_part(bd);
    973972        aoff64_t gba;
    974         errno_t rc;
     973        int rc;
    975974
    976975        log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_read_blocks()");
     
    993992}
    994993
    995 static errno_t vbds_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt)
     994static int vbds_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt)
    996995{
    997996        vbds_part_t *part = bd_srv_part(bd);
    998997        aoff64_t gba;
    999         errno_t rc;
     998        int rc;
    1000999
    10011000        log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_sync_cache()");
     
    10171016}
    10181017
    1019 static errno_t vbds_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
     1018static int vbds_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,
    10201019    const void *buf, size_t size)
    10211020{
    10221021        vbds_part_t *part = bd_srv_part(bd);
    10231022        aoff64_t gba;
    1024         errno_t rc;
     1023        int rc;
    10251024
    10261025        log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_write_blocks()");
     
    10421041}
    10431042
    1044 static errno_t vbds_bd_get_block_size(bd_srv_t *bd, size_t *rsize)
     1043static int vbds_bd_get_block_size(bd_srv_t *bd, size_t *rsize)
    10451044{
    10461045        vbds_part_t *part = bd_srv_part(bd);
     
    10551054}
    10561055
    1057 static errno_t vbds_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)
     1056static int vbds_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)
    10581057{
    10591058        vbds_part_t *part = bd_srv_part(bd);
     
    10711070{
    10721071        vbds_part_t *part;
    1073         errno_t rc;
     1072        int rc;
    10741073        service_id_t svcid;
    10751074
     
    10941093
    10951094/** Translate block segment address with range checking. */
    1096 static errno_t vbds_bsa_translate(vbds_part_t *part, aoff64_t ba, size_t cnt,
     1095static int vbds_bsa_translate(vbds_part_t *part, aoff64_t ba, size_t cnt,
    10971096    aoff64_t *gba)
    10981097{
     
    11051104
    11061105/** Register service for partition */
    1107 static errno_t vbds_part_svc_register(vbds_part_t *part)
     1106static int vbds_part_svc_register(vbds_part_t *part)
    11081107{
    11091108        char *name;
    11101109        service_id_t psid;
    11111110        int idx;
    1112         errno_t rc;
     1111        int rc;
    11131112
    11141113        idx = part->lpart->index;
    11151114
    1116         if (asprintf(&name, "%sp%u", part->disk->svc_name, idx) < 0) {
     1115        rc = asprintf(&name, "%sp%u", part->disk->svc_name, idx);
     1116        if (rc < 0) {
    11171117                log_msg(LOG_DEFAULT, LVL_ERROR, "Out of memory.");
    11181118                return ENOMEM;
     
    11241124        if (rc != EOK) {
    11251125                log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering "
    1126                     "service %s: %s.", name, str_error(rc));
     1126                    "service %s (%d).", name, rc);
    11271127                free(name);
    11281128                free(part);
     
    11521152
    11531153/** Unregister service for partition */
    1154 static errno_t vbds_part_svc_unregister(vbds_part_t *part)
    1155 {
    1156         errno_t rc;
     1154static int vbds_part_svc_unregister(vbds_part_t *part)
     1155{
     1156        int rc;
    11571157
    11581158        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_svc_unregister("
     
    11691169
    11701170/** Update service names for any partition whose index has changed. */
    1171 static errno_t vbds_part_indices_update(vbds_disk_t *disk)
     1171static int vbds_part_indices_update(vbds_disk_t *disk)
    11721172{
    11731173        label_part_info_t lpinfo;
    1174         errno_t rc;
     1174        int rc;
    11751175
    11761176        log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_indices_update()");
     
    12191219
    12201220/** Get block size wrapper for liblabel */
    1221 static errno_t vbds_label_get_bsize(void *arg, size_t *bsize)
     1221static int vbds_label_get_bsize(void *arg, size_t *bsize)
    12221222{
    12231223        vbds_disk_t *disk = (vbds_disk_t *)arg;
     
    12261226
    12271227/** Get number of blocks wrapper for liblabel */
    1228 static errno_t vbds_label_get_nblocks(void *arg, aoff64_t *nblocks)
     1228static int vbds_label_get_nblocks(void *arg, aoff64_t *nblocks)
    12291229{
    12301230        vbds_disk_t *disk = (vbds_disk_t *)arg;
     
    12331233
    12341234/** Read blocks wrapper for liblabel */
    1235 static errno_t vbds_label_read(void *arg, aoff64_t ba, size_t cnt, void *buf)
     1235static int vbds_label_read(void *arg, aoff64_t ba, size_t cnt, void *buf)
    12361236{
    12371237        vbds_disk_t *disk = (vbds_disk_t *)arg;
     
    12401240
    12411241/** Write blocks wrapper for liblabel */
    1242 static errno_t vbds_label_write(void *arg, aoff64_t ba, size_t cnt, const void *data)
     1242static int vbds_label_write(void *arg, aoff64_t ba, size_t cnt, const void *data)
    12431243{
    12441244        vbds_disk_t *disk = (vbds_disk_t *)arg;
Note: See TracChangeset for help on using the changeset viewer.