From 9e11c7eee232b73600c2590c8c3326b2725daba5 Mon Sep 17 00:00:00 2001 From: Christopher Siden Date: Fri, 24 Aug 2012 15:10:22 +0200 Subject: [PATCH] Illumos #3085: zfs diff panics, then panics in a loop on booting Reviewed by: Matt Ahrens Approved by: Richard Lowe References: https://www.illumos.org/issues/3085 Ported by: Martin Matuska Signed-off-by: Brian Behlendorf --- module/zfs/dsl_dataset.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index 25c8ac6b1..fce6d3c1a 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -3854,6 +3854,11 @@ dsl_dataset_user_release_sync(void *arg1, void *tag, dmu_tx_t *tx) VERIFY(error == 0 || error == ENOENT); zapobj = ds->ds_phys->ds_userrefs_obj; VERIFY(0 == zap_remove(mos, zapobj, ra->htag, tx)); + + spa_history_log_internal(LOG_DS_USER_RELEASE, + dp->dp_spa, tx, "<%s> %lld dataset = %llu", + ra->htag, (longlong_t)refs, dsobj); + if (ds->ds_userrefs == 0 && ds->ds_phys->ds_num_children == 1 && DS_IS_DEFER_DESTROY(ds)) { struct dsl_ds_destroyarg dsda = {0}; @@ -3864,10 +3869,6 @@ dsl_dataset_user_release_sync(void *arg1, void *tag, dmu_tx_t *tx) /* We already did the destroy_check */ dsl_dataset_destroy_sync(&dsda, tag, tx); } - - spa_history_log_internal(LOG_DS_USER_RELEASE, - dp->dp_spa, tx, "<%s> %lld dataset = %llu", - ra->htag, (longlong_t)refs, dsobj); } static int