Changeset 56602e0 in mainline for uspace/srv/bd/hr/raid1.c
- Timestamp:
- 2025-05-07T11:27:25Z (4 weeks ago)
- Children:
- 964e897
- Parents:
- 155d34f
- git-author:
- Miroslav Cimerman <mc@…> (2025-05-07 11:26:23)
- git-committer:
- Miroslav Cimerman <mc@…> (2025-05-07 11:27:25)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/raid1.c
r155d34f r56602e0 56 56 #include "var.h" 57 57 58 static void hr_raid1_update_vol_stat us(hr_volume_t *);58 static void hr_raid1_update_vol_state(hr_volume_t *); 59 59 static void hr_raid1_ext_state_callback(hr_volume_t *, size_t, errno_t); 60 60 static size_t hr_raid1_count_good_extents(hr_volume_t *, uint64_t, size_t, … … 110 110 /* force volume state update */ 111 111 hr_mark_vol_state_dirty(new_volume); 112 hr_raid1_update_vol_stat us(new_volume);112 hr_raid1_update_vol_state(new_volume); 113 113 114 114 fibril_rwlock_read_lock(&new_volume->states_lock); 115 hr_vol_stat us_t state = new_volume->status;115 hr_vol_state_t state = new_volume->state; 116 116 fibril_rwlock_read_unlock(&new_volume->states_lock); 117 117 if (state == HR_VOL_FAULTY || state == HR_VOL_NONE) { … … 140 140 } 141 141 142 void hr_raid1_stat us_event(hr_volume_t *vol)142 void hr_raid1_state_event(hr_volume_t *vol) 143 143 { 144 144 HR_DEBUG("%s()", __func__); 145 145 146 hr_raid1_update_vol_stat us(vol);146 hr_raid1_update_vol_state(vol); 147 147 } 148 148 … … 153 153 errno_t rc = hr_util_add_hotspare(vol, hotspare); 154 154 155 hr_raid1_update_vol_stat us(vol);155 hr_raid1_update_vol_state(vol); 156 156 157 157 return rc; … … 213 213 } 214 214 215 static void hr_raid1_update_vol_stat us(hr_volume_t *vol)215 static void hr_raid1_update_vol_state(hr_volume_t *vol) 216 216 { 217 217 bool exp = true; … … 231 231 fibril_rwlock_read_lock(&vol->states_lock); 232 232 233 hr_vol_stat us_t old_state = vol->status;233 hr_vol_state_t old_state = vol->state; 234 234 size_t healthy = hr_count_extents(vol, HR_EXT_ONLINE); 235 235 … … 240 240 if (old_state != HR_VOL_FAULTY) { 241 241 fibril_rwlock_write_lock(&vol->states_lock); 242 hr_update_vol_stat us(vol, HR_VOL_FAULTY);242 hr_update_vol_state(vol, HR_VOL_FAULTY); 243 243 fibril_rwlock_write_unlock(&vol->states_lock); 244 244 } … … 247 247 old_state != HR_VOL_DEGRADED) { 248 248 fibril_rwlock_write_lock(&vol->states_lock); 249 hr_update_vol_stat us(vol, HR_VOL_DEGRADED);249 hr_update_vol_state(vol, HR_VOL_DEGRADED); 250 250 fibril_rwlock_write_unlock(&vol->states_lock); 251 251 } … … 265 265 if (old_state != HR_VOL_ONLINE) { 266 266 fibril_rwlock_write_lock(&vol->states_lock); 267 hr_update_vol_stat us(vol, HR_VOL_ONLINE);267 hr_update_vol_state(vol, HR_VOL_ONLINE); 268 268 fibril_rwlock_write_unlock(&vol->states_lock); 269 269 } … … 283 283 switch (rc) { 284 284 case ENOMEM: 285 hr_update_ext_stat us(vol, extent, HR_EXT_INVALID);285 hr_update_ext_state(vol, extent, HR_EXT_INVALID); 286 286 break; 287 287 case ENOENT: 288 hr_update_ext_stat us(vol, extent, HR_EXT_MISSING);288 hr_update_ext_state(vol, extent, HR_EXT_MISSING); 289 289 break; 290 290 default: 291 hr_update_ext_stat us(vol, extent, HR_EXT_FAILED);291 hr_update_ext_state(vol, extent, HR_EXT_FAILED); 292 292 } 293 293 … … 305 305 size_t count = 0; 306 306 for (size_t i = 0; i < vol->extent_no; i++) { 307 if (vol->extents[i].stat us== HR_EXT_ONLINE ||308 (vol->extents[i].stat us== HR_EXT_REBUILD &&307 if (vol->extents[i].state == HR_EXT_ONLINE || 308 (vol->extents[i].state == HR_EXT_REBUILD && 309 309 ba < rebuild_blk)) { 310 310 count++; … … 326 326 327 327 fibril_rwlock_read_lock(&vol->states_lock); 328 hr_vol_stat us_t vol_state = vol->status;328 hr_vol_state_t vol_state = vol->state; 329 329 fibril_rwlock_read_unlock(&vol->states_lock); 330 330 … … 358 358 for (i = 0; i < vol->extent_no; i++) { 359 359 fibril_rwlock_read_lock(&vol->states_lock); 360 hr_ext_stat us_t state = vol->extents[i].status;360 hr_ext_state_t state = vol->extents[i].state; 361 361 fibril_rwlock_read_unlock(&vol->states_lock); 362 362 … … 412 412 413 413 for (i = 0; i < vol->extent_no; i++) { 414 if (vol->extents[i].stat us!= HR_EXT_ONLINE &&415 (vol->extents[i].stat us!= HR_EXT_REBUILD ||414 if (vol->extents[i].state != HR_EXT_ONLINE && 415 (vol->extents[i].state != HR_EXT_REBUILD || 416 416 ba >= rebuild_blk)) { 417 417 /* … … 458 458 fibril_rwlock_read_unlock(&vol->extents_lock); 459 459 460 hr_raid1_update_vol_stat us(vol);460 hr_raid1_update_vol_state(vol); 461 461 462 462 return rc; … … 533 533 fibril_rwlock_write_lock(&vol->states_lock); 534 534 535 hr_update_ext_stat us(vol, rebuild_idx, HR_EXT_ONLINE);535 hr_update_ext_state(vol, rebuild_idx, HR_EXT_ONLINE); 536 536 537 537 /* … … 541 541 * state accordingly. 542 542 */ 543 hr_update_vol_stat us(vol, HR_VOL_ONLINE);543 hr_update_vol_state(vol, HR_VOL_ONLINE); 544 544 hr_mark_vol_state_dirty(vol); 545 545 … … 558 558 */ 559 559 fibril_rwlock_write_lock(&vol->states_lock); 560 hr_update_vol_stat us(vol, HR_VOL_DEGRADED);560 hr_update_vol_state(vol, HR_VOL_DEGRADED); 561 561 hr_mark_vol_state_dirty(vol); 562 562 fibril_rwlock_write_unlock(&vol->states_lock); … … 565 565 fibril_rwlock_read_unlock(&vol->extents_lock); 566 566 567 hr_raid1_update_vol_stat us(vol);567 hr_raid1_update_vol_state(vol); 568 568 569 569 if (buf != NULL) … … 591 591 size_t bad = vol->extent_no; 592 592 for (size_t i = 0; i < vol->extent_no; i++) { 593 if (vol->extents[i].stat us!= HR_EXT_ONLINE) {593 if (vol->extents[i].state != HR_EXT_ONLINE) { 594 594 bad = i; 595 595 break; … … 606 606 size_t hotspare_idx = vol->hotspare_no - 1; 607 607 608 hr_ext_stat us_t hs_state = vol->hotspares[hotspare_idx].status;608 hr_ext_state_t hs_state = vol->hotspares[hotspare_idx].state; 609 609 if (hs_state != HR_EXT_HOTSPARE) { 610 610 HR_ERROR("hr_raid1_rebuild(): invalid hotspare state \"%s\", " … … 628 628 atomic_store_explicit(&vol->rebuild_blk, 0, memory_order_relaxed); 629 629 630 hr_update_ext_stat us(vol, bad, HR_EXT_REBUILD);631 hr_update_vol_stat us(vol, HR_VOL_REBUILD);630 hr_update_ext_state(vol, bad, HR_EXT_REBUILD); 631 hr_update_vol_state(vol, HR_VOL_REBUILD); 632 632 633 633 *rebuild_idx = bad; … … 648 648 649 649 hr_update_ext_svc_id(vol, bad, hs_svc_id); 650 hr_update_ext_stat us(vol, bad, HR_EXT_HOTSPARE);650 hr_update_ext_state(vol, bad, HR_EXT_HOTSPARE); 651 651 652 652 hr_update_hotspare_svc_id(vol, hs, 0); 653 hr_update_hotspare_stat us(vol, hs, HR_EXT_MISSING);653 hr_update_hotspare_state(vol, hs, HR_EXT_MISSING); 654 654 655 655 vol->hotspare_no--; … … 670 670 671 671 fibril_rwlock_read_lock(&vol->states_lock); 672 hr_ext_stat us_t rebuild_ext_status = rebuild_ext->status;672 hr_ext_state_t rebuild_ext_state = rebuild_ext->state; 673 673 fibril_rwlock_read_unlock(&vol->states_lock); 674 674 675 if (rebuild_ext_stat us!= HR_EXT_REBUILD)675 if (rebuild_ext_state != HR_EXT_REBUILD) 676 676 return EINVAL; 677 677 … … 679 679 fibril_rwlock_read_lock(&vol->states_lock); 680 680 ext = &vol->extents[i]; 681 if (ext->stat us!= HR_EXT_ONLINE) {681 if (ext->state != HR_EXT_ONLINE) { 682 682 fibril_rwlock_read_unlock(&vol->states_lock); 683 683 continue;
Note:
See TracChangeset
for help on using the changeset viewer.