Changeset 6a8c1569 in mainline
- Timestamp:
- 2025-06-23T18:31:18Z (4 months ago)
- Children:
- 62a8756
- Parents:
- e0695ce
- Location:
- uspace/srv/bd/hr
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/bd/hr/metadata/foreign/geom/hr_g_mirror.c
re0695ce r6a8c1569 64 64 static void meta_gmirror_inc_counter(hr_volume_t *); 65 65 static errno_t meta_gmirror_save(hr_volume_t *, bool); 66 static errno_t meta_gmirror_save_ext(hr_volume_t *, size_t, bool); 66 67 static const char *meta_gmirror_get_devname(const void *); 67 68 static hr_level_t meta_gmirror_get_level(const void *); … … 84 85 .inc_counter = meta_gmirror_inc_counter, 85 86 .save = meta_gmirror_save, 87 .save_ext = meta_gmirror_save_ext, 86 88 .get_devname = meta_gmirror_get_devname, 87 89 .get_level = meta_gmirror_get_level, … … 312 314 } 313 315 316 static errno_t meta_gmirror_save_ext(hr_volume_t *vol, size_t ext_idx, 317 bool with_state_callback) 318 { 319 HR_DEBUG("%s()", __func__); 320 321 return ENOTSUP; 322 } 323 314 324 static const char *meta_gmirror_get_devname(const void *md_v) 315 325 { -
uspace/srv/bd/hr/metadata/foreign/geom/hr_g_stripe.c
re0695ce r6a8c1569 64 64 static void meta_gstripe_inc_counter(hr_volume_t *); 65 65 static errno_t meta_gstripe_save(hr_volume_t *, bool); 66 static errno_t meta_gstripe_save_ext(hr_volume_t *, size_t, bool); 66 67 static const char *meta_gstripe_get_devname(const void *); 67 68 static hr_level_t meta_gstripe_get_level(const void *); … … 84 85 .inc_counter = meta_gstripe_inc_counter, 85 86 .save = meta_gstripe_save, 87 .save_ext = meta_gstripe_save_ext, 86 88 .get_devname = meta_gstripe_get_devname, 87 89 .get_level = meta_gstripe_get_level, … … 298 300 } 299 301 302 static errno_t meta_gstripe_save_ext(hr_volume_t *vol, size_t ext_idx, 303 bool with_state_callback) 304 { 305 HR_DEBUG("%s()", __func__); 306 307 return ENOTSUP; 308 } 309 300 310 static const char *meta_gstripe_get_devname(const void *md_v) 301 311 { -
uspace/srv/bd/hr/metadata/foreign/softraid/hr_softraid.c
re0695ce r6a8c1569 64 64 static void meta_softraid_inc_counter(hr_volume_t *); 65 65 static errno_t meta_softraid_save(hr_volume_t *, bool); 66 static errno_t meta_softraid_save_ext(hr_volume_t *, size_t, bool); 66 67 static const char *meta_softraid_get_devname(const void *); 67 68 static hr_level_t meta_softraid_get_level(const void *); … … 84 85 .inc_counter = meta_softraid_inc_counter, 85 86 .save = meta_softraid_save, 87 .save_ext = meta_softraid_save_ext, 86 88 .get_devname = meta_softraid_get_devname, 87 89 .get_level = meta_softraid_get_level, … … 437 439 } 438 440 441 static errno_t meta_softraid_save_ext(hr_volume_t *vol, size_t ext_idx, 442 bool with_state_callback) 443 { 444 HR_DEBUG("%s()", __func__); 445 446 return ENOTSUP; 447 } 448 439 449 static const char *meta_softraid_get_devname(const void *md_v) 440 450 { -
uspace/srv/bd/hr/metadata/native.c
re0695ce r6a8c1569 65 65 static void meta_native_inc_counter(hr_volume_t *); 66 66 static errno_t meta_native_save(hr_volume_t *, bool); 67 static errno_t meta_native_save_ext(hr_volume_t *, size_t, bool); 67 68 static const char *meta_native_get_devname(const void *); 68 69 static hr_level_t meta_native_get_level(const void *); … … 86 87 .inc_counter = meta_native_inc_counter, 87 88 .save = meta_native_save, 89 .save_ext = meta_native_save_ext, 88 90 .get_devname = meta_native_get_devname, 89 91 .get_level = meta_native_get_level, … … 394 396 HR_DEBUG("%s()", __func__); 395 397 396 errno_t rc = EOK; 398 fibril_rwlock_read_lock(&vol->extents_lock); 399 400 for (size_t i = 0; i < vol->extent_no; i++) 401 meta_native_save_ext(vol, i, with_state_callback); 402 403 fibril_rwlock_read_unlock(&vol->extents_lock); 404 405 return EOK; 406 } 407 408 static errno_t meta_native_save_ext(hr_volume_t *vol, size_t ext_idx, 409 bool with_state_callback) 410 { 411 HR_DEBUG("%s()", __func__); 412 413 assert(fibril_rwlock_is_locked(&vol->extents_lock)); 397 414 398 415 void *md_block = hr_calloc_waitok(1, vol->bsize); … … 400 417 hr_metadata_t *md = (hr_metadata_t *)vol->in_mem_md; 401 418 402 fibril_rwlock_read_lock(&vol->extents_lock); 419 hr_extent_t *ext = &vol->extents[ext_idx]; 420 421 fibril_rwlock_read_lock(&vol->states_lock); 422 hr_ext_state_t s = ext->state; 423 fibril_rwlock_read_unlock(&vol->states_lock); 424 425 if (s != HR_EXT_ONLINE && s != HR_EXT_REBUILD) { 426 return EINVAL; 427 } 403 428 404 429 fibril_mutex_lock(&vol->md_lock); 405 430 406 for (size_t i = 0; i < vol->extent_no; i++) { 407 hr_extent_t *ext = &vol->extents[i]; 408 409 fibril_rwlock_read_lock(&vol->states_lock); 410 hr_ext_state_t s = ext->state; 411 412 if (s != HR_EXT_ONLINE && s != HR_EXT_REBUILD) { 413 fibril_rwlock_read_unlock(&vol->states_lock); 414 continue; 415 } 416 417 fibril_rwlock_read_unlock(&vol->states_lock); 418 419 md->index = i; 420 if (s == HR_EXT_REBUILD) 421 md->rebuild_pos = vol->rebuild_blk; 422 else 423 md->rebuild_pos = 0; 424 meta_native_encode(md, md_block); 425 rc = meta_native_write_block(ext->svc_id, md_block); 426 if (rc != EOK && with_state_callback) 427 vol->hr_ops.ext_state_cb(vol, i, rc); 428 } 431 md->index = ext_idx; 432 if (s == HR_EXT_REBUILD) 433 md->rebuild_pos = vol->rebuild_blk; 434 else 435 md->rebuild_pos = 0; 436 meta_native_encode(md, md_block); 437 errno_t rc = meta_native_write_block(ext->svc_id, md_block); 438 if (rc != EOK && with_state_callback) 439 vol->hr_ops.ext_state_cb(vol, ext_idx, rc); 429 440 430 441 fibril_mutex_unlock(&vol->md_lock); 431 432 fibril_rwlock_read_unlock(&vol->extents_lock);433 442 434 443 if (with_state_callback) -
uspace/srv/bd/hr/raid1.c
re0695ce r6a8c1569 520 520 521 521 if (written * vol->bsize > HR_REBUILD_SAVE_BYTES) { 522 vol->meta_ops->save(vol, WITH_STATE_CALLBACK); 522 vol->meta_ops->save_ext(vol, rebuild_idx, 523 WITH_STATE_CALLBACK); 523 524 written = 0; 524 525 } -
uspace/srv/bd/hr/raid5.c
re0695ce r6a8c1569 819 819 820 820 if (written * vol->bsize > HR_REBUILD_SAVE_BYTES) { 821 vol->meta_ops->save(vol, WITH_STATE_CALLBACK); 821 vol->meta_ops->save_ext(vol, rebuild_idx, 822 WITH_STATE_CALLBACK); 822 823 written = 0; 823 824 } -
uspace/srv/bd/hr/superblock.h
re0695ce r6a8c1569 56 56 void (*inc_counter)(hr_volume_t *); 57 57 errno_t (*save)(hr_volume_t *, bool); 58 errno_t (*save_ext)(hr_volume_t *, size_t, bool); 58 59 const char *(*get_devname)(const void *); 59 60 hr_level_t (*get_level)(const void *);
Note:
See TracChangeset
for help on using the changeset viewer.