Don't allocate from new metaslabs
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Paul Dagnelie <pcd@delphix.com> Closes #15307 Closes #15308
This commit is contained in:
parent
ec994486b1
commit
5551dcd762
|
@ -3250,6 +3250,15 @@ metaslab_segment_weight(metaslab_t *msp)
|
|||
static boolean_t
|
||||
metaslab_should_allocate(metaslab_t *msp, uint64_t asize, boolean_t try_hard)
|
||||
{
|
||||
/*
|
||||
* This case will usually but not always get caught by the checks below;
|
||||
* metaslabs can be loaded by various means, including the trim and
|
||||
* initialize code. Once that happens, without this check they are
|
||||
* allocatable even before they finish their first txg sync.
|
||||
*/
|
||||
if (unlikely(msp->ms_new))
|
||||
return (B_FALSE);
|
||||
|
||||
/*
|
||||
* If the metaslab is loaded, ms_max_size is definitive and we can use
|
||||
* the fast check. If it's not, the ms_max_size is a lower bound (once
|
||||
|
|
Loading…
Reference in New Issue