From: Tom Caputi Date: Wed, 18 Oct 2017 17:08:36 +0000 (-0400) Subject: Fix ASSERT in dmu_free_long_object_raw() X-Git-Tag: zfs-0.8.0-rc1~512 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=35df0bb5565c81ba52de430108b37eced9de0606;p=zfs 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 --- 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 {