From 35df0bb5565c81ba52de430108b37eced9de0606 Mon Sep 17 00:00:00 2001 From: Tom Caputi Date: Wed, 18 Oct 2017 13:08:36 -0400 Subject: [PATCH] Fix ASSERT in dmu_free_long_object_raw() This small patch fixes an issue where dmu_free_long_object_raw() calls dnode_hold() after freeing the dnode a line above. Reviewed-by: Jorgen Lundman Reviewed-by: Brian Behlendorf Signed-off-by: Tom Caputi Closes #6766 --- module/zfs/dmu.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/module/zfs/dmu.c b/module/zfs/dmu.c index 1aba0b133..42889504f 100644 --- a/module/zfs/dmu.c +++ b/module/zfs/dmu.c @@ -932,9 +932,10 @@ dmu_free_long_object_impl(objset_t *os, uint64_t object, boolean_t raw) dmu_tx_mark_netfree(tx); err = dmu_tx_assign(tx, TXG_WAIT); if (err == 0) { - err = dmu_object_free(os, object, tx); - if (err == 0 && raw) - VERIFY0(dmu_object_dirty_raw(os, object, tx)); + if (raw) + err = dmu_object_dirty_raw(os, object, tx); + if (err == 0) + err = dmu_object_free(os, object, tx); dmu_tx_commit(tx); } else { -- 2.40.0