]> granicus.if.org Git - zfs/commitdiff
Enhance a dmu_tx_dirty_buf() assertion
authorBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 12 Mar 2012 19:38:00 +0000 (12:38 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 23 Mar 2012 19:24:05 +0000 (12:24 -0700)
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 <behlendorf1@llnl.gov>
module/zfs/dmu_tx.c

index 17eb52708fbbc827d0c4053d85ba4d799b571968..5f333ab96c67232e5d3ab495d69099d2923da9b5 100644 (file)
@@ -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) {