Illumos 6292 - exporting a pool while an async destroy
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> References: https://www.illumos.org/issues/6292 https://github.com/illumos/illumos-gate/commit/a443cc8 Ported-by: kernelOfTruth kerneloftruth@gmail.com Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
This commit is contained in:
parent
5511754b4f
commit
2e8efe1bef
|
@ -1470,11 +1470,24 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx)
|
||||||
dsl_scan_setup_sync(&func, 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 the scan is inactive due to a stalled async destroy, try again.
|
||||||
*/
|
*/
|
||||||
if ((!scn->scn_async_stalled && !dsl_scan_active(scn)) ||
|
if (!scn->scn_async_stalled && !dsl_scan_active(scn))
|
||||||
spa_sync_pass(dp->dp_spa) > 1)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
scn->scn_visited_this_txg = 0;
|
scn->scn_visited_this_txg = 0;
|
||||||
|
|
Loading…
Reference in New Issue