HomeFreeBSD

Correct weight recalculation of space-based metaslabs

Description

Correct weight recalculation of space-based metaslabs

Currently, after a failed allocation, the metaslab code recalculates the
weight for a metaslab. However, for space-based metaslabs, it uses the
maximum free segment size instead of the normal weighting
algorithm. This is presumably because the normal metaslab weight is
(roughly) intended to estimate the size of the largest free segment, but
it doesn't do that reliably at most fragmentation levels. This means
that recalculated metaslabs are forced to a weight that isn't really
using the same units as the rest of them, resulting in undesirable
behaviors. We switch this to use the normal space-weighting function.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Alexander Motin <mav@FreeBSD.org>
Signed-off-by: Paul Dagnelie <paul.dagnelie@klarasystems.com>
Sponsored-by: Wasabi Technology, Inc.
Sponsored-by: Klara, Inc.
Closes #17531

Details

Provenance
pcd_delphix.comAuthored on Jul 16 2025, 5:20 PM
GitHub <noreply@github.com>Committed on Jul 16 2025, 5:20 PM
Parents
rGb21e04e8d9bd: Fix zdb pool/ with -k
Branches
Unknown
Tags
Unknown