@@ -5958,7 +5958,8 @@ metaslab_alloc_range(spa_t *spa, metaslab_class_t *mc, uint64_t psize,
5958
5958
5959
5959
for (int d = 0 ; d < ndvas ; d ++ ) {
5960
5960
error = metaslab_alloc_dva_range (spa , mc , psize , max_psize ,
5961
- dva , d , hintdva , txg , flags , zal , allocator , & cur_psize );
5961
+ dva , d , hintdva , txg , flags , zal , allocator ,
5962
+ actual_psize ? & cur_psize : NULL );
5962
5963
if (error != 0 ) {
5963
5964
for (d -- ; d >= 0 ; d -- ) {
5964
5965
metaslab_unalloc_dva (spa , & dva [d ], txg );
@@ -5977,14 +5978,16 @@ metaslab_alloc_range(spa_t *spa, metaslab_class_t *mc, uint64_t psize,
5977
5978
metaslab_group_alloc_increment (spa ,
5978
5979
DVA_GET_VDEV (& dva [d ]), allocator , flags , psize ,
5979
5980
tag );
5980
- min_psize = MIN (cur_psize , min_psize );
5981
+ if (actual_psize )
5982
+ min_psize = MIN (cur_psize , min_psize );
5981
5983
}
5982
5984
}
5983
5985
ASSERT (error == 0 );
5984
5986
ASSERT (BP_GET_NDVAS (bp ) == ndvas );
5985
- ASSERT3U ( min_psize , ! = , UINT64_MAX );
5986
- if ( actual_psize )
5987
+ if ( actual_psize ) {
5988
+ ASSERT3U ( min_psize , ! = , UINT64_MAX );
5987
5989
* actual_psize = min_psize ;
5990
+ }
5988
5991
5989
5992
spa_config_exit (spa , SCL_ALLOC , FTAG );
5990
5993
0 commit comments