diff options
author | Brian Behlendorf <[email protected]> | 2018-12-14 10:03:05 -0800 |
---|---|---|
committer | GitHub <[email protected]> | 2018-12-14 10:03:05 -0800 |
commit | 0dd6b6bfcb2c14249a6d6b874e11ff137777d349 (patch) | |
tree | 29d5bc2208b35c0a4b0a309e3e0843d3a04e83c7 | |
parent | 98d07d5798390bbe3817418db51afa895831e900 (diff) |
ztest: ENOSPC in ztest_objset_destroy_cb()
While unlikely it is possible for dsl_destroy_head() to return
ENOSPC in the ztest_objset_destroy_cb(). This can occur even
when ZFS_SPACE_CHECK_DESTROY is used with the dsl_sync_task().
Both the existence of a checkpoint and pending deferred frees
can cause this.
Reviewed-by: Serapheim Dimitropoulos <[email protected]>
Reviewed-by: Tom Caputi <[email protected]>
Signed-off-by: Brian Behlendorf <[email protected]>
Closes #8206
-rw-r--r-- | cmd/ztest/ztest.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/cmd/ztest/ztest.c b/cmd/ztest/ztest.c index c4bcd74fc..28ab0e846 100644 --- a/cmd/ztest/ztest.c +++ b/cmd/ztest/ztest.c @@ -3980,9 +3980,13 @@ ztest_objset_destroy_cb(const char *name, void *arg) VERIFY0(dsl_destroy_snapshot(name, B_TRUE)); } else { error = dsl_destroy_head(name); - /* There could be a hold on this dataset */ - if (error != EBUSY) + if (error == ENOSPC) { + /* There could be checkpoint or insufficient slop */ + ztest_record_enospc(FTAG); + } else if (error != EBUSY) { + /* There could be a hold on this dataset */ ASSERT0(error); + } } return (0); } |