Don't use wrong weight when passivating group

When we're passivating a metaslab group we start by passivating the 
metaslabs that have been activated for each of the allocators.  To do 
that, we need to provide a weight. However, currently this erroneously 
always uses a segment-based weight, even if segment-based weighting is 
disabled.

Use the normal weight function, which will decide which type of weight 
to use.

Sponsored-by: Klara, Inc.
Sponsored-by: Wasabi Technology, Inc.
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <alexander.motin@TrueNAS.com>
Signed-off-by: Paul Dagnelie <paul.dagnelie@klarasystems.com>
Closes #17566
This commit is contained in:
Paul Dagnelie 2025-07-29 14:28:01 -07:00 committed by Alexander Motin
parent 582e7847f6
commit 271b9797c5

View File

@ -969,14 +969,16 @@ metaslab_group_passivate(metaslab_group_t *mg)
if (msp != NULL) { if (msp != NULL) {
mutex_enter(&msp->ms_lock); mutex_enter(&msp->ms_lock);
metaslab_passivate(msp, metaslab_passivate(msp,
metaslab_weight_from_range_tree(msp)); metaslab_weight(msp, B_TRUE) &
~METASLAB_ACTIVE_MASK);
mutex_exit(&msp->ms_lock); mutex_exit(&msp->ms_lock);
} }
msp = mga->mga_secondary; msp = mga->mga_secondary;
if (msp != NULL) { if (msp != NULL) {
mutex_enter(&msp->ms_lock); mutex_enter(&msp->ms_lock);
metaslab_passivate(msp, metaslab_passivate(msp,
metaslab_weight_from_range_tree(msp)); metaslab_weight(msp, B_TRUE) &
~METASLAB_ACTIVE_MASK);
mutex_exit(&msp->ms_lock); mutex_exit(&msp->ms_lock);
} }
} }