From 0dd6b6bfcb2c14249a6d6b874e11ff137777d349 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Fri, 14 Dec 2018 10:03:05 -0800 Subject: [PATCH] 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 Reviewed-by: Tom Caputi Signed-off-by: Brian Behlendorf Closes #8206 --- cmd/ztest/ztest.c | 8 ++++++-- 1 file 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); }