diff options
author | delphij <delphij@FreeBSD.org> | 2014-12-15 05:10:55 +0000 |
---|---|---|
committer | delphij <delphij@FreeBSD.org> | 2014-12-15 05:10:55 +0000 |
commit | a715ee11eebd7f23690265e812dab9c612bb4d66 (patch) | |
tree | 266d8e43255e4d650d214afb3fa8ebc8f8293699 /sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c | |
parent | 9959a8151cef3da350e94b720c8cc1180ed0e17b (diff) | |
download | FreeBSD-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.c | 10 |
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); |