MFV r294798:
6292 exporting a pool while an async destroy is running can leave entries in the deferred tree Reviewed by: Paul Dagnelie <pcd@delphix.com> Reviewed by: Matthew Ahrens <mahrens@delphix.com> Reviewed by: Andriy Gapon <avg@FreeBSD.org> Reviewed by: Fabian Keil <fk@fabiankeil.de> Approved by: Gordon Ross <gordon.ross@nexenta.com> illumos/illumos-gate@a443cc80c7
This commit is contained in:
parent
c81378ec32
commit
9b06fb3e33
@ -1440,11 +1440,24 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
|
||||
dsl_scan_setup_sync(&func, tx);
|
||||
}
|
||||
|
||||
/*
|
||||
* Only process scans in sync pass 1.
|
||||
*/
|
||||
if (spa_sync_pass(dp->dp_spa) > 1)
|
||||
return;
|
||||
|
||||
/*
|
||||
* If the spa is shutting down, then stop scanning. This will
|
||||
* ensure that the scan does not dirty any new data during the
|
||||
* shutdown phase.
|
||||
*/
|
||||
if (spa_shutting_down(spa))
|
||||
return;
|
||||
|
||||
/*
|
||||
* If the scan is inactive due to a stalled async destroy, try again.
|
||||
*/
|
||||
if ((!scn->scn_async_stalled && !dsl_scan_active(scn)) ||
|
||||
spa_sync_pass(dp->dp_spa) > 1)
|
||||
if (!scn->scn_async_stalled && !dsl_scan_active(scn))
|
||||
return;
|
||||
|
||||
scn->scn_visited_this_txg = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user