Changeset 23df41b in mainline for uspace/srv/bd/hr/util.c
- Timestamp:
- 2025-01-13T22:18:22Z (5 months ago)
- Children:
- a6fb937
- Parents:
- 35f2a877
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/util.c
r35f2a877 r23df41b 410 410 } 411 411 412 void hr_process_deferred_invalidations(hr_volume_t *vol) 413 { 414 HR_DEBUG("hr_raid1_update_vol_status(): deferred invalidations\n"); 415 416 fibril_mutex_lock(&vol->halt_lock); 417 vol->halt_please = true; 418 fibril_rwlock_write_lock(&vol->extents_lock); 419 fibril_rwlock_write_lock(&vol->states_lock); 420 fibril_mutex_lock(&vol->hotspare_lock); 421 422 list_foreach(vol->deferred_invalidations_list, link, 423 hr_deferred_invalidation_t, di) { 424 assert(vol->extents[di->index].status == HR_EXT_INVALID); 425 426 HR_DEBUG("moving invalidated extent no. %lu to hotspares\n", 427 di->index); 428 429 block_fini(di->svc_id); 430 431 size_t hs_idx = vol->hotspare_no; 432 433 vol->hotspare_no++; 434 435 hr_update_hotspare_svc_id(vol, hs_idx, di->svc_id); 436 hr_update_hotspare_status(vol, hs_idx, HR_EXT_HOTSPARE); 437 438 hr_update_ext_svc_id(vol, di->index, 0); 439 hr_update_ext_status(vol, di->index, HR_EXT_MISSING); 440 441 assert(vol->hotspare_no < HR_MAX_HOTSPARES + HR_MAX_EXTENTS); 442 } 443 444 for (size_t i = 0; i < HR_MAX_EXTENTS; i++) { 445 hr_deferred_invalidation_t *di = &vol->deferred_inval[i]; 446 if (di->svc_id != 0) { 447 list_remove(&di->link); 448 di->svc_id = 0; 449 } 450 } 451 452 fibril_mutex_unlock(&vol->hotspare_lock); 453 fibril_rwlock_write_unlock(&vol->states_lock); 454 fibril_rwlock_write_unlock(&vol->extents_lock); 455 vol->halt_please = false; 456 fibril_mutex_unlock(&vol->halt_lock); 457 } 458 412 459 /** @} 413 460 */
Note:
See TracChangeset
for help on using the changeset viewer.