mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-24 11:18:52 +03:00
Factor metaslab_load_wait() in metaslab_load()
Most callers that need to operate on a loaded metaslab, always call metaslab_load_wait() before loading the metaslab just in case someone else is already doing the work. Factoring metaslab_load_wait() within metaslab_load() makes the later more robust, as callers won't have to do the load-wait check explicitly every time they need to load a metaslab. Reviewed-by: Matt Ahrens <mahrens@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Serapheim Dimitropoulos <serapheim@delphix.com> Closes #8290
This commit is contained in:
committed by
Brian Behlendorf
parent
960347d3a6
commit
b194fab0fb
@@ -362,16 +362,6 @@ vdev_initialize_ranges(vdev_t *vd, abd_t *data)
|
||||
return (0);
|
||||
}
|
||||
|
||||
static void
|
||||
vdev_initialize_ms_load(metaslab_t *msp)
|
||||
{
|
||||
ASSERT(MUTEX_HELD(&msp->ms_lock));
|
||||
|
||||
metaslab_load_wait(msp);
|
||||
if (!msp->ms_loaded)
|
||||
VERIFY0(metaslab_load(msp));
|
||||
}
|
||||
|
||||
static void
|
||||
vdev_initialize_mg_wait(metaslab_group_t *mg)
|
||||
{
|
||||
@@ -494,7 +484,7 @@ vdev_initialize_calculate_progress(vdev_t *vd)
|
||||
* metaslab. Load it and walk the free tree for more accurate
|
||||
* progress estimation.
|
||||
*/
|
||||
vdev_initialize_ms_load(msp);
|
||||
VERIFY0(metaslab_load(msp));
|
||||
|
||||
for (range_seg_t *rs = avl_first(&msp->ms_allocatable->rt_root);
|
||||
rs; rs = AVL_NEXT(&msp->ms_allocatable->rt_root, rs)) {
|
||||
@@ -630,7 +620,7 @@ vdev_initialize_thread(void *arg)
|
||||
|
||||
vdev_initialize_ms_mark(msp);
|
||||
mutex_enter(&msp->ms_lock);
|
||||
vdev_initialize_ms_load(msp);
|
||||
VERIFY0(metaslab_load(msp));
|
||||
|
||||
range_tree_walk(msp->ms_allocatable, vdev_initialize_range_add,
|
||||
vd);
|
||||
|
||||
Reference in New Issue
Block a user