Changeset da80de9 in mainline for uspace/srv/bd/hr/raid0.c
- Timestamp:
- 2025-06-07T11:52:34Z (9 days ago)
- Children:
- d482b05
- Parents:
- 49da044
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/raid0.c
r49da044 rda80de9 53 53 #include "var.h" 54 54 55 static void hr_raid0_update_vol_state(hr_volume_t *);56 static void hr_raid0_state_callback(hr_volume_t *, size_t, errno_t);57 55 static errno_t hr_raid0_bd_op(hr_bd_op_type_t, bd_srv_t *, aoff64_t, size_t, 58 56 void *, const void *, size_t); … … 92 90 } 93 91 94 hr_raid0_ update_vol_state(new_volume);92 hr_raid0_vol_state_eval(new_volume); 95 93 if (new_volume->state != HR_VOL_ONLINE) { 96 94 HR_NOTE("\"%s\": unusable state, not creating\n", … … 103 101 new_volume->hr_bds.sarg = new_volume; 104 102 105 new_volume->state_callback = hr_raid0_state_callback;106 107 103 return EOK; 108 104 } … … 130 126 } 131 127 132 void hr_raid0_state_event(hr_volume_t *vol) 133 { 134 HR_DEBUG("%s()", __func__); 135 136 hr_raid0_update_vol_state(vol); 137 } 138 139 static errno_t hr_raid0_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 140 { 141 HR_DEBUG("%s()", __func__); 142 143 hr_volume_t *vol = bd->srvs->sarg; 144 145 atomic_fetch_add_explicit(&vol->open_cnt, 1, memory_order_relaxed); 146 147 return EOK; 148 } 149 150 static errno_t hr_raid0_bd_close(bd_srv_t *bd) 151 { 152 HR_DEBUG("%s()", __func__); 153 154 hr_volume_t *vol = bd->srvs->sarg; 155 156 atomic_fetch_sub_explicit(&vol->open_cnt, 1, memory_order_relaxed); 157 158 return EOK; 159 } 160 161 static errno_t hr_raid0_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt) 162 { 163 return hr_raid0_bd_op(HR_BD_SYNC, bd, ba, cnt, NULL, NULL, 0); 164 } 165 166 static errno_t hr_raid0_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 167 void *buf, size_t size) 168 { 169 return hr_raid0_bd_op(HR_BD_READ, bd, ba, cnt, buf, NULL, size); 170 } 171 172 static errno_t hr_raid0_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 173 const void *data, size_t size) 174 { 175 return hr_raid0_bd_op(HR_BD_WRITE, bd, ba, cnt, NULL, data, size); 176 } 177 178 static errno_t hr_raid0_bd_get_block_size(bd_srv_t *bd, size_t *rsize) 179 { 180 hr_volume_t *vol = bd->srvs->sarg; 181 182 *rsize = vol->bsize; 183 return EOK; 184 } 185 186 static errno_t hr_raid0_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb) 187 { 188 hr_volume_t *vol = bd->srvs->sarg; 189 190 *rnb = vol->data_blkno; 191 return EOK; 192 } 193 194 static void hr_raid0_update_vol_state(hr_volume_t *vol) 195 { 128 void hr_raid0_vol_state_eval(hr_volume_t *vol) 129 { 130 HR_DEBUG("%s()", __func__); 131 196 132 fibril_mutex_lock(&vol->md_lock); 197 133 … … 226 162 } 227 163 228 static void hr_raid0_state_callback(hr_volume_t *vol, size_t extent, errno_t rc) 229 { 164 void hr_raid0_ext_state_cb(hr_volume_t *vol, size_t extent, errno_t rc) 165 { 166 HR_DEBUG("%s()", __func__); 167 230 168 if (rc == EOK) 231 169 return; … … 246 184 } 247 185 186 static errno_t hr_raid0_bd_open(bd_srvs_t *bds, bd_srv_t *bd) 187 { 188 HR_DEBUG("%s()", __func__); 189 190 hr_volume_t *vol = bd->srvs->sarg; 191 192 atomic_fetch_add_explicit(&vol->open_cnt, 1, memory_order_relaxed); 193 194 return EOK; 195 } 196 197 static errno_t hr_raid0_bd_close(bd_srv_t *bd) 198 { 199 HR_DEBUG("%s()", __func__); 200 201 hr_volume_t *vol = bd->srvs->sarg; 202 203 atomic_fetch_sub_explicit(&vol->open_cnt, 1, memory_order_relaxed); 204 205 return EOK; 206 } 207 208 static errno_t hr_raid0_bd_sync_cache(bd_srv_t *bd, aoff64_t ba, size_t cnt) 209 { 210 return hr_raid0_bd_op(HR_BD_SYNC, bd, ba, cnt, NULL, NULL, 0); 211 } 212 213 static errno_t hr_raid0_bd_read_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 214 void *buf, size_t size) 215 { 216 return hr_raid0_bd_op(HR_BD_READ, bd, ba, cnt, buf, NULL, size); 217 } 218 219 static errno_t hr_raid0_bd_write_blocks(bd_srv_t *bd, aoff64_t ba, size_t cnt, 220 const void *data, size_t size) 221 { 222 return hr_raid0_bd_op(HR_BD_WRITE, bd, ba, cnt, NULL, data, size); 223 } 224 225 static errno_t hr_raid0_bd_get_block_size(bd_srv_t *bd, size_t *rsize) 226 { 227 hr_volume_t *vol = bd->srvs->sarg; 228 229 *rsize = vol->bsize; 230 return EOK; 231 } 232 233 static errno_t hr_raid0_bd_get_num_blocks(bd_srv_t *bd, aoff64_t *rnb) 234 { 235 hr_volume_t *vol = bd->srvs->sarg; 236 237 *rnb = vol->data_blkno; 238 return EOK; 239 } 240 248 241 static errno_t hr_raid0_bd_op(hr_bd_op_type_t type, bd_srv_t *bd, aoff64_t ba, 249 242 size_t cnt, void *dst, const void *src, size_t size) 250 243 { 244 HR_DEBUG("%s()", __func__); 245 251 246 hr_volume_t *vol = bd->srvs->sarg; 252 247 errno_t rc;
Note:
See TracChangeset
for help on using the changeset viewer.