From 99ea23c583b272470a21e0ac7caa1f485f6b1125 Mon Sep 17 00:00:00 2001 From: Brian Behlendorf Date: Mon, 12 Mar 2012 12:38:00 -0700 Subject: [PATCH] Enhance a dmu_tx_dirty_buf() assertion The following assertion is good to validate the correctness of new DMU consumers, but it doesn't quite provide enough information. Slightly rework the assertion so that when it is hit the actual offending values will be included in the output. SPLError: 4787:0:(dmu_tx.c:828:dmu_tx_dirty_buf()) ASSERTION(dn == NULL || dn->dn_assigned_txg == tx->tx_txg) failed Signed-off-by: Brian Behlendorf --- module/zfs/dmu_tx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/module/zfs/dmu_tx.c b/module/zfs/dmu_tx.c index 17eb52708f..5f333ab96c 100644 --- a/module/zfs/dmu_tx.c +++ b/module/zfs/dmu_tx.c @@ -808,6 +808,7 @@ dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_impl_t *db) DB_DNODE_ENTER(db); dn = DB_DNODE(db); + ASSERT(dn != NULL); ASSERT(tx->tx_txg != 0); ASSERT(tx->tx_objset == NULL || dn->dn_objset == tx->tx_objset); ASSERT3U(dn->dn_object, ==, db->db.db_object); @@ -825,7 +826,7 @@ dmu_tx_dirty_buf(dmu_tx_t *tx, dmu_buf_impl_t *db) for (txh = list_head(&tx->tx_holds); txh; txh = list_next(&tx->tx_holds, txh)) { - ASSERT(dn == NULL || dn->dn_assigned_txg == tx->tx_txg); + ASSERT3U(dn->dn_assigned_txg, ==, tx->tx_txg); if (txh->txh_dnode == dn && txh->txh_type != THT_NEWOBJECT) match_object = TRUE; if (txh->txh_dnode == NULL || txh->txh_dnode == dn) {