Changeset 3c518fc in mainline for uspace/srv/bd/hr/raid0.c
- Timestamp:
- 2025-06-17T22:31:01Z (5 weeks ago)
- Children:
- f0360ec
- Parents:
- 137f7cf5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/raid0.c
r137f7cf5 r3c518fc 253 253 uint8_t *data_read = dst; 254 254 255 if (size < cnt * vol->bsize) 256 return EINVAL; 257 255 258 fibril_rwlock_read_lock(&vol->states_lock); 256 259 if (vol->state != HR_VOL_ONLINE) { … … 259 262 } 260 263 fibril_rwlock_read_unlock(&vol->states_lock); 261 262 /* propagate sync */263 if (type == HR_BD_SYNC && ba == 0 && cnt == 0) {264 hr_fgroup_t *group = hr_fgroup_create(vol->fge,265 vol->extent_no);266 if (group == NULL)267 return ENOMEM;268 269 for (size_t i = 0; i < vol->extent_no; i++) {270 hr_io_t *io = hr_fgroup_alloc(group);271 io->extent = i;272 io->ba = ba;273 io->cnt = cnt;274 io->type = type;275 io->vol = vol;276 277 hr_fgroup_submit(group, hr_io_worker, io);278 }279 280 size_t bad;281 rc = hr_fgroup_wait(group, NULL, &bad);282 if (rc == ENOMEM)283 return ENOMEM;284 285 if (bad > 0)286 return EIO;287 288 return EOK;289 }290 291 if (type == HR_BD_READ || type == HR_BD_WRITE)292 if (size < cnt * vol->bsize)293 return EINVAL;294 264 295 265 rc = hr_check_ba_range(vol, cnt, ba); … … 334 304 break; 335 305 336 if (type == HR_BD_READ) 337 data_read += len; 338 else if (type == HR_BD_WRITE) 339 data_write += len; 306 data_read += len; 307 data_write += len; 340 308 341 309 strip_off = 0;
Note:
See TracChangeset
for help on using the changeset viewer.