diff options
author | Matthew Ahrens <[email protected]> | 2015-07-11 02:19:41 +0200 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2015-07-14 10:35:21 -0700 |
commit | 905edb405da278ccb019c656408f82796a344510 (patch) | |
tree | 156f806c86f7ad50155e73fb8edb295d653f2ea5 /module/zfs/dsl_scan.c | |
parent | 93f6d7e2e5050ee8894c0ae5e7c91aa74187cd86 (diff) |
Illumos 5347 - idle pool may run itself out of space
5347 idle pool may run itself out of space
Reviewed by: Alex Reece <[email protected]>
Reviewed by: George Wilson <[email protected]>
Reviewed by: Steven Hartland <[email protected]>
Reviewed by: Richard Elling <[email protected]>
Approved by: Dan McDonald <[email protected]>
References:
https://github.com/illumos/illumos-gate/commit/231aab8
https://github.com/illumos/illumos-gate/commit/4a92375 3642
https://www.illumos.org/issues/5347
https://github.com/zfsonlinux/zfs/commit/89b1cd6 (partial commit & fix)
https://github.com/zfsonlinux/zfs/commit/fbeddd6 Illumos 4390
https://github.com/zfsonlinux/zfs/commit/2696dfa Illumos 3642, 3643
Porting notes:
This is completing the partial fix from FreeBSD
Ported-by: kernelOfTruth [email protected]
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #3586
Diffstat (limited to 'module/zfs/dsl_scan.c')
-rw-r--r-- | module/zfs/dsl_scan.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/module/zfs/dsl_scan.c b/module/zfs/dsl_scan.c index 048935971..b989e7633 100644 --- a/module/zfs/dsl_scan.c +++ b/module/zfs/dsl_scan.c @@ -1528,11 +1528,15 @@ dsl_scan_sync(dsl_pool_t *dp, dmu_tx_t *tx) dp->dp_bptree_obj, tx)); dp->dp_bptree_obj = 0; scn->scn_async_destroying = B_FALSE; + scn->scn_async_stalled = B_FALSE; } else { /* - * If we didn't make progress, mark the async destroy as - * stalled, so that we will not initiate a spa_sync() on - * its behalf. + * If we didn't make progress, mark the async + * destroy as stalled, so that we will not initiate + * a spa_sync() on its behalf. Note that we only + * check this if we are not finished, because if the + * bptree had no blocks for us to visit, we can + * finish without "making progress". */ scn->scn_async_stalled = (scn->scn_visited_this_txg == 0); |