Changes in uspace/srv/bd/vbd/disk.c [fafb8e5:4285f384] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/vbd/disk.c
rfafb8e5 r4285f384 1 1 /* 2 * Copyright (c) 20 16Jiri Svoboda2 * Copyright (c) 2025 Jiri Svoboda 3 3 * All rights reserved. 4 4 * … … 35 35 36 36 #include <adt/list.h> 37 #include <bd.h> 37 38 #include <bd_srv.h> 38 39 #include <block.h> … … 51 52 #include "types/vbd.h" 52 53 54 loc_srv_t *vbds_srv; 55 53 56 static fibril_mutex_t vbds_disks_lock; 54 57 static list_t vbds_disks; /* of vbds_disk_t */ … … 69 72 static errno_t vbds_bd_get_block_size(bd_srv_t *, size_t *); 70 73 static errno_t vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *); 74 static errno_t vbds_bd_eject(bd_srv_t *); 71 75 72 76 static errno_t vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *); … … 91 95 .write_blocks = vbds_bd_write_blocks, 92 96 .get_block_size = vbds_bd_get_block_size, 93 .get_num_blocks = vbds_bd_get_num_blocks 97 .get_num_blocks = vbds_bd_get_num_blocks, 98 .eject = vbds_bd_eject 94 99 }; 95 100 … … 497 502 498 503 log_msg(LOG_DEFAULT, LVL_DEBUG, "block_init(%zu)", sid); 499 rc = block_init(sid , 2048);504 rc = block_init(sid); 500 505 if (rc != EOK) { 501 506 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed opening block device %s.", … … 579 584 log_msg(LOG_DEFAULT, LVL_DEBUG, "block_fini(%zu)", sid); 580 585 block_fini(sid); 586 free(disk->svc_name); 581 587 free(disk); 582 588 return EOK; … … 1069 1075 } 1070 1076 1077 static errno_t vbds_bd_eject(bd_srv_t *bd) 1078 { 1079 vbds_part_t *part = bd_srv_part(bd); 1080 async_sess_t *sess; 1081 bd_t *bdc; 1082 errno_t rc; 1083 1084 log_msg(LOG_DEFAULT, LVL_DEBUG, "vbds_bd_eject()"); 1085 1086 fibril_rwlock_read_lock(&part->lock); 1087 1088 sess = loc_service_connect(part->disk->svc_id, INTERFACE_BLOCK, 0); 1089 if (sess == NULL) { 1090 log_msg(LOG_DEFAULT, LVL_WARN, 1091 "vbds_bd_eject() - failed connect"); 1092 fibril_rwlock_read_unlock(&part->lock); 1093 return EIO; 1094 } 1095 1096 rc = bd_open(sess, &bdc); 1097 if (rc != EOK) { 1098 log_msg(LOG_DEFAULT, LVL_WARN, 1099 "vbds_bd_eject() - failed open"); 1100 async_hangup(sess); 1101 fibril_rwlock_read_unlock(&part->lock); 1102 return EIO; 1103 } 1104 1105 rc = bd_eject(bdc); 1106 1107 bd_close(bdc); 1108 async_hangup(sess); 1109 1110 fibril_rwlock_read_unlock(&part->lock); 1111 return rc; 1112 } 1113 1071 1114 void vbds_bd_conn(ipc_call_t *icall, void *arg) 1072 1115 { … … 1122 1165 log_msg(LOG_DEFAULT, LVL_DEBUG, "loc_service_register('%s')", 1123 1166 name); 1124 rc = loc_service_register( name, &psid);1167 rc = loc_service_register(vbds_srv, name, &psid); 1125 1168 if (rc != EOK) { 1126 1169 log_msg(LOG_DEFAULT, LVL_ERROR, "Failed registering " … … 1131 1174 } 1132 1175 1133 rc = loc_service_add_to_cat( psid, part_cid);1176 rc = loc_service_add_to_cat(vbds_srv, psid, part_cid); 1134 1177 if (rc != EOK) { 1135 1178 log_msg(LOG_DEFAULT, LVL_ERROR, "Failled adding partition " … … 1138 1181 free(part); 1139 1182 1140 rc = loc_service_unregister( psid);1183 rc = loc_service_unregister(vbds_srv, psid); 1141 1184 if (rc != EOK) { 1142 1185 log_msg(LOG_DEFAULT, LVL_ERROR, "Error unregistering " … … 1160 1203 "disk->svc_name='%s', id=%zu)", part->disk->svc_name, part->svc_id); 1161 1204 1162 rc = loc_service_unregister( part->svc_id);1205 rc = loc_service_unregister(vbds_srv, part->svc_id); 1163 1206 if (rc != EOK) 1164 1207 return EIO;
Note:
See TracChangeset
for help on using the changeset viewer.