Changeset f0360ec in mainline for uspace/srv/bd/hr/raid1.c
- Timestamp:
- 2025-06-17T22:33:02Z (7 months ago)
- Children:
- f0cc1c64
- Parents:
- 3c518fc
- File:
-
- 1 edited
-
uspace/srv/bd/hr/raid1.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/raid1.c
r3c518fc rf0360ec 174 174 175 175 switch (rc) { 176 case ENOMEM:177 hr_update_ext_state(vol, extent, HR_EXT_INVALID);178 break;179 176 case ENOENT: 180 177 hr_update_ext_state(vol, extent, HR_EXT_MISSING); … … 372 369 } 373 370 374 rc = block_read_direct(vol->extents[i].svc_id, ba, cnt,371 rc = hr_read_direct(vol->extents[i].svc_id, ba, cnt, 375 372 data_read); 376 377 if (rc == ENOMEM && i + 1 == vol->extent_no)378 goto end;379 380 if (rc == ENOMEM)381 continue;382 383 373 if (rc != EOK) { 384 374 hr_raid1_ext_state_cb(vol, i, rc); … … 389 379 } 390 380 break; 391 case HR_BD_SYNC:392 381 case HR_BD_WRITE: 393 if (type == HR_BD_WRITE) { 394 rl = hr_range_lock_acquire(vol, ba, cnt); 395 if (rl == NULL) { 396 rc = ENOMEM; 397 goto end; 398 } 399 } 382 rl = hr_range_lock_acquire(vol, ba, cnt); 400 383 401 384 fibril_rwlock_read_lock(&vol->states_lock); … … 408 391 409 392 hr_fgroup_t *group = hr_fgroup_create(vol->fge, good); 410 if (group == NULL) {411 if (type == HR_BD_WRITE)412 hr_range_lock_release(rl);413 rc = ENOMEM;414 fibril_rwlock_read_unlock(&vol->states_lock);415 goto end;416 }417 393 418 394 for (i = 0; i < vol->extent_no; i++) { … … 446 422 (void)hr_fgroup_wait(group, &successful, NULL); 447 423 448 if (type == HR_BD_WRITE) 449 hr_range_lock_release(rl); 424 hr_range_lock_release(rl); 450 425 451 426 break; 452 427 default: 453 rc = EINVAL; 454 goto end; 428 assert(0); 455 429 } 456 430 … … 460 434 rc = EIO; 461 435 462 end:463 436 fibril_rwlock_read_unlock(&vol->extents_lock); 464 437
Note:
See TracChangeset
for help on using the changeset viewer.
