summaryrefslogtreecommitdiffstats
path: root/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
diff options
context:
space:
mode:
authordelphij <delphij@FreeBSD.org>2014-12-15 05:10:55 +0000
committerdelphij <delphij@FreeBSD.org>2014-12-15 05:10:55 +0000
commita715ee11eebd7f23690265e812dab9c612bb4d66 (patch)
tree266d8e43255e4d650d214afb3fa8ebc8f8293699 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
parent9959a8151cef3da350e94b720c8cc1180ed0e17b (diff)
downloadFreeBSD-src-a715ee11eebd7f23690265e812dab9c612bb4d66.zip
FreeBSD-src-a715ee11eebd7f23690265e812dab9c612bb4d66.tar.gz
MFV r275550:
In addition to r273158, make the code in spa_sync() that checks if the current TXG is a no-op TXG less fragile. Illumos issue: 5347 idle pool may run itself out of space MFC after: 2 weeks
Diffstat (limited to 'sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c')
-rw-r--r--sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
index 8923151..ffa940e 100644
--- a/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
+++ b/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
@@ -1486,11 +1486,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);
OpenPOWER on IntegriCloud