]> granicus.if.org Git - zfs/commitdiff
Illumos #3085: zfs diff panics, then panics in a loop on booting
authorChristopher Siden <chris.siden@delphix.com>
Fri, 24 Aug 2012 13:10:22 +0000 (15:10 +0200)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sat, 25 Aug 2012 19:32:25 +0000 (12:32 -0700)
Reviewed by: Matt Ahrens <matthew.ahrens@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>

References:
  https://www.illumos.org/issues/3085

Ported by: Martin Matuska <martin@matuska.org>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
module/zfs/dsl_dataset.c

index 25c8ac6b125833c1f9a953e949c0106881742a41..fce6d3c1a969cfcfa3610e6131106beb6ffa69c4 100644 (file)
@@ -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