Changeset 4d42a1b in mainline for uspace/srv/bd/hr/util.c
- Timestamp:
- 2025-03-06T20:13:11Z (5 months ago)
- Children:
- 10005fd
- Parents:
- 6123753
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/util.c
r6123753 r4d42a1b 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 459 412 /** @} 460 413 */
Note:
See TracChangeset
for help on using the changeset viewer.