Changes in uspace/srv/bd/vbd/disk.c [b7fd2a0:5772aa1] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/vbd/disk.c
rb7fd2a0 r5772aa1 38 38 #include <block.h> 39 39 #include <errno.h> 40 #include <str_error.h>41 40 #include <io/log.h> 42 41 #include <label/empty.h> … … 58 57 static category_id_t part_cid; 59 58 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 *,59 static int vbds_disk_parts_add(vbds_disk_t *, label_t *); 60 static int vbds_disk_parts_remove(vbds_disk_t *, vbds_rem_flag_t); 61 62 static int vbds_bd_open(bd_srvs_t *, bd_srv_t *); 63 static int vbds_bd_close(bd_srv_t *); 64 static int vbds_bd_read_blocks(bd_srv_t *, aoff64_t, size_t, void *, size_t); 65 static int vbds_bd_sync_cache(bd_srv_t *, aoff64_t, size_t); 66 static int vbds_bd_write_blocks(bd_srv_t *, aoff64_t, size_t, const void *, 68 67 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 *);68 static int vbds_bd_get_block_size(bd_srv_t *, size_t *); 69 static int vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *); 70 71 static int vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *); 72 73 static int vbds_part_svc_register(vbds_part_t *); 74 static int vbds_part_svc_unregister(vbds_part_t *); 75 static int vbds_part_indices_update(vbds_disk_t *); 77 76 78 77 static vbd_part_id_t vbds_part_id = 1; 79 78 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 *);79 static int vbds_label_get_bsize(void *, size_t *); 80 static int vbds_label_get_nblocks(void *, aoff64_t *); 81 static int vbds_label_read(void *, aoff64_t, size_t, void *); 82 static int vbds_label_write(void *, aoff64_t, size_t, const void *); 84 83 85 84 /** Block device operations provided by VBD */ … … 132 131 } 133 132 134 errno_t vbds_disks_init(void)135 { 136 errno_t rc;133 int vbds_disks_init(void) 134 { 135 int rc; 137 136 138 137 fibril_mutex_initialize(&vbds_disks_lock); … … 152 151 153 152 /** Check for new/removed disk devices */ 154 static errno_t vbds_disks_check_new(void)153 static int vbds_disks_check_new(void) 155 154 { 156 155 bool already_known; … … 159 158 size_t count, i; 160 159 vbds_disk_t *cur, *next; 161 errno_t rc;160 int rc; 162 161 163 162 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disks_check_new()"); … … 229 228 230 229 231 static errno_t vbds_disk_by_svcid(service_id_t sid, vbds_disk_t **rdisk)230 static int vbds_disk_by_svcid(service_id_t sid, vbds_disk_t **rdisk) 232 231 { 233 232 list_foreach(vbds_disks, ldisks, vbds_disk_t, disk) { … … 256 255 } 257 256 258 static errno_t vbds_part_by_pid(vbds_part_id_t partid, vbds_part_t **rpart)257 static int vbds_part_by_pid(vbds_part_id_t partid, vbds_part_t **rpart) 259 258 { 260 259 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_by_pid(%zu)", partid); … … 278 277 } 279 278 280 static errno_t vbds_part_by_svcid(service_id_t svcid, vbds_part_t **rpart)279 static int vbds_part_by_svcid(service_id_t svcid, vbds_part_t **rpart) 281 280 { 282 281 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_by_svcid(%zu)", svcid); … … 301 300 302 301 /** 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,302 static int vbds_part_add(vbds_disk_t *disk, label_part_t *lpart, 304 303 vbds_part_t **rpart) 305 304 { … … 307 306 service_id_t psid = 0; 308 307 label_part_info_t lpinfo; 309 errno_t rc;308 int rc; 310 309 311 310 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_add(%s, %p)", … … 362 361 * 363 362 */ 364 static errno_t vbds_part_remove(vbds_part_t *part, vbds_rem_flag_t flag,363 static int vbds_part_remove(vbds_part_t *part, vbds_rem_flag_t flag, 365 364 label_part_t **rlpart) 366 365 { 367 366 label_part_t *lpart; 368 errno_t rc;367 int rc; 369 368 370 369 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_remove(%p)", part); … … 404 403 /** Remove all disk partitions from our inventory leaving only the underlying 405 404 * liblabel partition structures. */ 406 static errno_t vbds_disk_parts_add(vbds_disk_t *disk, label_t *label)405 static int vbds_disk_parts_add(vbds_disk_t *disk, label_t *label) 407 406 { 408 407 label_part_t *part; 409 errno_t rc;408 int rc; 410 409 411 410 part = label_part_first(label); … … 426 425 /** Remove all disk partitions from our inventory leaving only the underlying 427 426 * liblabel partition structures. */ 428 static errno_t vbds_disk_parts_remove(vbds_disk_t *disk, vbds_rem_flag_t flag)427 static int vbds_disk_parts_remove(vbds_disk_t *disk, vbds_rem_flag_t flag) 429 428 { 430 429 link_t *link; 431 430 vbds_part_t *part; 432 errno_t rc;431 int rc; 433 432 434 433 link = list_first(&disk->parts); … … 450 449 } 451 450 452 errno_t vbds_disk_discovery_start(void)453 { 454 errno_t rc;451 int vbds_disk_discovery_start(void) 452 { 453 int rc; 455 454 456 455 rc = loc_register_cat_change_cb(vbds_disk_cat_change_cb); 457 456 if (rc != EOK) { 458 457 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering callback " 459 "for disk discovery : %s.", str_error(rc));458 "for disk discovery (%d).", rc); 460 459 return rc; 461 460 } … … 464 463 } 465 464 466 errno_t vbds_disk_add(service_id_t sid)465 int vbds_disk_add(service_id_t sid) 467 466 { 468 467 label_t *label = NULL; … … 472 471 size_t block_size; 473 472 aoff64_t nblocks; 474 errno_t rc;473 int rc; 475 474 476 475 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_add(%zu)", sid); … … 557 556 } 558 557 559 errno_t vbds_disk_remove(service_id_t sid)558 int vbds_disk_remove(service_id_t sid) 560 559 { 561 560 vbds_disk_t *disk; 562 errno_t rc;561 int rc; 563 562 564 563 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_remove(%zu)", sid); … … 583 582 584 583 /** 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)584 int vbds_disk_get_ids(service_id_t *id_buf, size_t buf_size, size_t *act_size) 586 585 { 587 586 size_t act_cnt; … … 611 610 } 612 611 613 errno_t vbds_disk_info(service_id_t sid, vbd_disk_info_t *info)612 int vbds_disk_info(service_id_t sid, vbd_disk_info_t *info) 614 613 { 615 614 vbds_disk_t *disk; 616 615 label_info_t linfo; 617 errno_t rc;616 int rc; 618 617 619 618 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_disk_info(%zu)", sid); … … 638 637 } 639 638 640 errno_t vbds_get_parts(service_id_t sid, service_id_t *id_buf, size_t buf_size,639 int vbds_get_parts(service_id_t sid, service_id_t *id_buf, size_t buf_size, 641 640 size_t *act_size) 642 641 { … … 644 643 size_t act_cnt; 645 644 size_t buf_cnt; 646 errno_t rc;645 int rc; 647 646 648 647 rc = vbds_disk_by_svcid(sid, &disk); … … 668 667 } 669 668 670 errno_t vbds_label_create(service_id_t sid, label_type_t ltype)669 int vbds_label_create(service_id_t sid, label_type_t ltype) 671 670 { 672 671 label_t *label; … … 674 673 label_info_t linfo; 675 674 vbds_disk_t *disk; 676 errno_t rc, rc2;675 int rc, rc2; 677 676 678 677 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_create(%zu)", sid); … … 739 738 } 740 739 741 errno_t vbds_label_delete(service_id_t sid)740 int vbds_label_delete(service_id_t sid) 742 741 { 743 742 vbds_disk_t *disk; 744 743 label_t *label; 745 744 label_bd_t lbd; 746 errno_t rc;745 int rc; 747 746 748 747 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_label_delete(%zu)", sid); … … 781 780 } 782 781 783 errno_t vbds_part_get_info(vbds_part_id_t partid, vbd_part_info_t *pinfo)782 int vbds_part_get_info(vbds_part_id_t partid, vbd_part_info_t *pinfo) 784 783 { 785 784 vbds_part_t *part; 786 785 label_part_info_t lpinfo; 787 errno_t rc;786 int rc; 788 787 789 788 rc = vbds_part_by_pid(partid, &part); … … 810 809 } 811 810 812 errno_t vbds_part_create(service_id_t sid, vbd_part_spec_t *pspec,811 int vbds_part_create(service_id_t sid, vbd_part_spec_t *pspec, 813 812 vbds_part_id_t *rpart) 814 813 { … … 817 816 label_part_spec_t lpspec; 818 817 label_part_t *lpart; 819 errno_t rc;818 int rc; 820 819 821 820 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_create(%zu)", sid); … … 879 878 } 880 879 881 errno_t vbds_part_delete(vbds_part_id_t partid)880 int vbds_part_delete(vbds_part_id_t partid) 882 881 { 883 882 vbds_part_t *part; 884 883 vbds_disk_t *disk; 885 884 label_part_t *lpart; 886 errno_t rc;885 int rc; 887 886 888 887 rc = vbds_part_by_pid(partid, &part); … … 918 917 } 919 918 920 errno_t vbds_suggest_ptype(service_id_t sid, label_pcnt_t pcnt,919 int vbds_suggest_ptype(service_id_t sid, label_pcnt_t pcnt, 921 920 label_ptype_t *ptype) 922 921 { 923 922 vbds_disk_t *disk; 924 errno_t rc;923 int rc; 925 924 926 925 rc = vbds_disk_by_svcid(sid, &disk); … … 942 941 } 943 942 944 static errno_t vbds_bd_open(bd_srvs_t *bds, bd_srv_t *bd)943 static int vbds_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 945 944 { 946 945 vbds_part_t *part = bd_srv_part(bd); … … 953 952 } 954 953 955 static errno_t vbds_bd_close(bd_srv_t *bd)954 static int vbds_bd_close(bd_srv_t *bd) 956 955 { 957 956 vbds_part_t *part = bd_srv_part(bd); … … 967 966 } 968 967 969 static errno_t vbds_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,968 static int vbds_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 970 969 void *buf, size_t size) 971 970 { 972 971 vbds_part_t *part = bd_srv_part(bd); 973 972 aoff64_t gba; 974 errno_t rc;973 int rc; 975 974 976 975 log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_read_blocks()"); … … 993 992 } 994 993 995 static errno_t vbds_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt)994 static int vbds_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt) 996 995 { 997 996 vbds_part_t *part = bd_srv_part(bd); 998 997 aoff64_t gba; 999 errno_t rc;998 int rc; 1000 999 1001 1000 log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_sync_cache()"); … … 1017 1016 } 1018 1017 1019 static errno_t vbds_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt,1018 static int vbds_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 1020 1019 const void *buf, size_t size) 1021 1020 { 1022 1021 vbds_part_t *part = bd_srv_part(bd); 1023 1022 aoff64_t gba; 1024 errno_t rc;1023 int rc; 1025 1024 1026 1025 log_msg(LOG_DEFAULT, LVL_DEBUG2, "vbds_bd_write_blocks()"); … … 1042 1041 } 1043 1042 1044 static errno_t vbds_bd_get_block_size(bd_srv_t *bd, size_t *rsize)1043 static int vbds_bd_get_block_size(bd_srv_t *bd, size_t *rsize) 1045 1044 { 1046 1045 vbds_part_t *part = bd_srv_part(bd); … … 1055 1054 } 1056 1055 1057 static errno_t vbds_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb)1056 static int vbds_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb) 1058 1057 { 1059 1058 vbds_part_t *part = bd_srv_part(bd); … … 1071 1070 { 1072 1071 vbds_part_t *part; 1073 errno_t rc;1072 int rc; 1074 1073 service_id_t svcid; 1075 1074 … … 1094 1093 1095 1094 /** Translate block segment address with range checking. */ 1096 static errno_t vbds_bsa_translate(vbds_part_t *part, aoff64_t ba, size_t cnt,1095 static int vbds_bsa_translate(vbds_part_t *part, aoff64_t ba, size_t cnt, 1097 1096 aoff64_t *gba) 1098 1097 { … … 1105 1104 1106 1105 /** Register service for partition */ 1107 static errno_t vbds_part_svc_register(vbds_part_t *part)1106 static int vbds_part_svc_register(vbds_part_t *part) 1108 1107 { 1109 1108 char *name; 1110 1109 service_id_t psid; 1111 1110 int idx; 1112 errno_t rc;1111 int rc; 1113 1112 1114 1113 idx = part->lpart->index; 1115 1114 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) { 1117 1117 log_msg(LOG_DEFAULT, LVL_ERROR, "Out of memory."); 1118 1118 return ENOMEM; … … 1124 1124 if (rc != EOK) { 1125 1125 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering " 1126 "service %s : %s.", name, str_error(rc));1126 "service %s (%d).", name, rc); 1127 1127 free(name); 1128 1128 free(part); … … 1152 1152 1153 1153 /** Unregister service for partition */ 1154 static errno_t vbds_part_svc_unregister(vbds_part_t *part)1155 { 1156 errno_t rc;1154 static int vbds_part_svc_unregister(vbds_part_t *part) 1155 { 1156 int rc; 1157 1157 1158 1158 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_svc_unregister(" … … 1169 1169 1170 1170 /** Update service names for any partition whose index has changed. */ 1171 static errno_t vbds_part_indices_update(vbds_disk_t *disk)1171 static int vbds_part_indices_update(vbds_disk_t *disk) 1172 1172 { 1173 1173 label_part_info_t lpinfo; 1174 errno_t rc;1174 int rc; 1175 1175 1176 1176 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_part_indices_update()"); … … 1219 1219 1220 1220 /** Get block size wrapper for liblabel */ 1221 static errno_t vbds_label_get_bsize(void *arg, size_t *bsize)1221 static int vbds_label_get_bsize(void *arg, size_t *bsize) 1222 1222 { 1223 1223 vbds_disk_t *disk = (vbds_disk_t *)arg; … … 1226 1226 1227 1227 /** Get number of blocks wrapper for liblabel */ 1228 static errno_t vbds_label_get_nblocks(void *arg, aoff64_t *nblocks)1228 static int vbds_label_get_nblocks(void *arg, aoff64_t *nblocks) 1229 1229 { 1230 1230 vbds_disk_t *disk = (vbds_disk_t *)arg; … … 1233 1233 1234 1234 /** Read blocks wrapper for liblabel */ 1235 static errno_t vbds_label_read(void *arg, aoff64_t ba, size_t cnt, void *buf)1235 static int vbds_label_read(void *arg, aoff64_t ba, size_t cnt, void *buf) 1236 1236 { 1237 1237 vbds_disk_t *disk = (vbds_disk_t *)arg; … … 1240 1240 1241 1241 /** Write blocks wrapper for liblabel */ 1242 static errno_t vbds_label_write(void *arg, aoff64_t ba, size_t cnt, const void *data)1242 static int vbds_label_write(void *arg, aoff64_t ba, size_t cnt, const void *data) 1243 1243 { 1244 1244 vbds_disk_t *disk = (vbds_disk_t *)arg;
Note:
See TracChangeset
for help on using the changeset viewer.