Changeset 56602e0 in mainline for uspace/srv/bd/hr/raid5.c
- Timestamp:
- 2025-05-07T11:27:25Z (5 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/raid5.c
r155d34f r56602e0 56 56 static errno_t hr_raid5_vol_usable(hr_volume_t *); 57 57 static ssize_t hr_raid5_get_bad_ext(hr_volume_t *); 58 static errno_t hr_raid5_update_vol_stat us(hr_volume_t *);58 static errno_t hr_raid5_update_vol_state(hr_volume_t *); 59 59 static void hr_raid5_handle_extent_error(hr_volume_t *, size_t, errno_t); 60 60 static void xor(void *, const void *, size_t); … … 105 105 fibril_rwlock_write_lock(&new_volume->states_lock); 106 106 107 errno_t rc = hr_raid5_update_vol_stat us(new_volume);107 errno_t rc = hr_raid5_update_vol_state(new_volume); 108 108 if (rc != EOK) { 109 109 HR_NOTE("\"%s\": unusable state, not creating\n", … … 145 145 } 146 146 147 void hr_raid5_stat us_event(hr_volume_t *vol)147 void hr_raid5_state_event(hr_volume_t *vol) 148 148 { 149 149 fibril_mutex_lock(&vol->lock); 150 150 fibril_rwlock_write_lock(&vol->states_lock); 151 (void)hr_raid5_update_vol_stat us(vol);151 (void)hr_raid5_update_vol_state(vol); 152 152 fibril_rwlock_write_unlock(&vol->states_lock); 153 153 fibril_mutex_unlock(&vol->lock); … … 167 167 * If the volume is degraded, start rebuild right away. 168 168 */ 169 if (vol->stat us== HR_VOL_DEGRADED) {169 if (vol->state == HR_VOL_DEGRADED) { 170 170 HR_DEBUG("hr_raid5_add_hotspare(): volume in DEGRADED state, " 171 171 "spawning new rebuild fibril\n"); … … 243 243 static errno_t hr_raid5_vol_usable(hr_volume_t *vol) 244 244 { 245 if (vol->stat us== HR_VOL_ONLINE ||246 vol->stat us== HR_VOL_DEGRADED ||247 vol->stat us== HR_VOL_REBUILD)245 if (vol->state == HR_VOL_ONLINE || 246 vol->state == HR_VOL_DEGRADED || 247 vol->state == HR_VOL_REBUILD) 248 248 return EOK; 249 249 return EIO; … … 257 257 { 258 258 for (size_t i = 0; i < vol->extent_no; i++) 259 if (vol->extents[i].stat us!= HR_EXT_ONLINE)259 if (vol->extents[i].state != HR_EXT_ONLINE) 260 260 return i; 261 261 return -1; 262 262 } 263 263 264 static errno_t hr_raid5_update_vol_stat us(hr_volume_t *vol)265 { 266 hr_vol_stat us_t old_state = vol->status;264 static errno_t hr_raid5_update_vol_state(hr_volume_t *vol) 265 { 266 hr_vol_state_t old_state = vol->state; 267 267 size_t bad = 0; 268 268 for (size_t i = 0; i < vol->extent_no; i++) 269 if (vol->extents[i].stat us!= HR_EXT_ONLINE)269 if (vol->extents[i].state != HR_EXT_ONLINE) 270 270 bad++; 271 271 … … 273 273 case 0: 274 274 if (old_state != HR_VOL_ONLINE) 275 hr_update_vol_stat us(vol, HR_VOL_ONLINE);275 hr_update_vol_state(vol, HR_VOL_ONLINE); 276 276 return EOK; 277 277 case 1: … … 279 279 old_state != HR_VOL_REBUILD) { 280 280 281 hr_update_vol_stat us(vol, HR_VOL_DEGRADED);281 hr_update_vol_state(vol, HR_VOL_DEGRADED); 282 282 283 283 if (vol->hotspare_no > 0) { … … 293 293 default: 294 294 if (old_state != HR_VOL_FAULTY) 295 hr_update_vol_stat us(vol, HR_VOL_FAULTY);295 hr_update_vol_state(vol, HR_VOL_FAULTY); 296 296 return EIO; 297 297 } … … 302 302 { 303 303 if (rc == ENOENT) 304 hr_update_ext_stat us(vol, extent, HR_EXT_MISSING);304 hr_update_ext_state(vol, extent, HR_EXT_MISSING); 305 305 else if (rc != EOK) 306 hr_update_ext_stat us(vol, extent, HR_EXT_FAILED);306 hr_update_ext_state(vol, extent, HR_EXT_FAILED); 307 307 } 308 308 … … 537 537 if (type == HR_BD_SYNC && ba == 0 && cnt == 0) { 538 538 hr_sync_all_extents(vol); 539 rc = hr_raid5_update_vol_stat us(vol);539 rc = hr_raid5_update_vol_state(vol); 540 540 return rc; 541 541 } … … 611 611 switch (type) { 612 612 case HR_BD_SYNC: 613 if (vol->extents[extent].stat us!= HR_EXT_ONLINE)613 if (vol->extents[extent].state != HR_EXT_ONLINE) 614 614 break; 615 615 rc = block_sync_cache(vol->extents[extent].svc_id, … … 648 648 649 649 if (rc != EOK) { 650 rc = hr_raid5_update_vol_stat us(vol);650 rc = hr_raid5_update_vol_state(vol); 651 651 if (rc == EOK) { 652 652 /* … … 700 700 701 701 error: 702 (void)hr_raid5_update_vol_stat us(vol);702 (void)hr_raid5_update_vol_state(vol); 703 703 fibril_rwlock_write_unlock(&vol->states_lock); 704 704 fibril_mutex_unlock(&vol->lock); … … 727 727 size_t bad = vol->extent_no; 728 728 for (size_t i = 0; i < vol->extent_no; i++) { 729 if (vol->extents[i].stat us== HR_EXT_FAILED) {729 if (vol->extents[i].state == HR_EXT_FAILED) { 730 730 bad = i; 731 731 break; … … 742 742 size_t hotspare_idx = vol->hotspare_no - 1; 743 743 744 hr_ext_stat us_t hs_state = vol->hotspares[hotspare_idx].status;744 hr_ext_state_t hs_state = vol->hotspares[hotspare_idx].state; 745 745 if (hs_state != HR_EXT_HOTSPARE) { 746 746 HR_ERROR("hr_raid5_rebuild(): invalid hotspare state \"%s\", " … … 755 755 756 756 vol->extents[bad].svc_id = vol->hotspares[hotspare_idx].svc_id; 757 hr_update_ext_stat us(vol, bad, HR_EXT_HOTSPARE);757 hr_update_ext_state(vol, bad, HR_EXT_HOTSPARE); 758 758 759 759 vol->hotspares[hotspare_idx].svc_id = 0; 760 760 fibril_mutex_lock(&vol->hotspare_lock); 761 hr_update_hotspare_stat us(vol, hotspare_idx, HR_EXT_MISSING);761 hr_update_hotspare_state(vol, hotspare_idx, HR_EXT_MISSING); 762 762 fibril_mutex_unlock(&vol->hotspare_lock); 763 763 … … 769 769 rebuild_ext->svc_id); 770 770 771 hr_update_ext_stat us(vol, bad, HR_EXT_REBUILD);772 hr_update_vol_stat us(vol, HR_VOL_REBUILD);771 hr_update_ext_state(vol, bad, HR_EXT_REBUILD); 772 hr_update_vol_state(vol, HR_VOL_REBUILD); 773 773 774 774 uint64_t max_blks = DATA_XFER_LIMIT / vol->bsize; … … 838 838 "extent number %zu\n", vol->devname, vol->svc_id, hotspare_idx); 839 839 840 hr_update_ext_stat us(vol, bad, HR_EXT_ONLINE);840 hr_update_ext_state(vol, bad, HR_EXT_ONLINE); 841 841 842 842 rc = vol->meta_ops->save(vol, WITH_STATE_CALLBACK); 843 843 844 844 end: 845 (void)hr_raid5_update_vol_stat us(vol);845 (void)hr_raid5_update_vol_state(vol); 846 846 847 847 fibril_rwlock_write_unlock(&vol->states_lock);
Note:
See TracChangeset
for help on using the changeset viewer.