Changeset 4285f384 in mainline for uspace/srv/bd/vbd/disk.c
- Timestamp:
- 2025-02-25T20:25:43Z (17 hours ago)
- Branches:
- master
- Parents:
- d231a54
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/vbd/disk.c
rd231a54 r4285f384 1 1 /* 2 * Copyright (c) 202 4Jiri 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> … … 71 72 static errno_t vbds_bd_get_block_size(bd_srv_t *, size_t *); 72 73 static errno_t vbds_bd_get_num_blocks(bd_srv_t *, aoff64_t *); 74 static errno_t vbds_bd_eject(bd_srv_t *); 73 75 74 76 static errno_t vbds_bsa_translate(vbds_part_t *, aoff64_t, size_t, aoff64_t *); … … 93 95 .write_blocks = vbds_bd_write_blocks, 94 96 .get_block_size = vbds_bd_get_block_size, 95 .get_num_blocks = vbds_bd_get_num_blocks 97 .get_num_blocks = vbds_bd_get_num_blocks, 98 .eject = vbds_bd_eject 96 99 }; 97 100 … … 1070 1073 1071 1074 return EOK; 1075 } 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; 1072 1112 } 1073 1113
Note:
See TracChangeset
for help on using the changeset viewer.