Hello,

Just looking at a piece of code in dmu_tx.c and have one question:

in dmu_tx_t *
dmu_tx_create_dd(dsl_dir_t *dd)
{
        dmu_tx_t *tx = kmem_zalloc(sizeof (dmu_tx_t), KM_SLEEP);
        tx->tx_dir = dd;
        if (dd)
                tx->tx_pool = dd->dd_pool;

According to this, the tx_pool may remain un-initialized, if dd==null.

in dmu_tx_count_free() the tx_pool is de-referenced without checking.

spa_t *spa  = txh->txh_tx->tx_pool->dp_spa;
     
Could the spa here be derived from the dnode's object set instead?
e.g.:

spa_t *spa  = dn->dn_objset->os_spa; 

TIA for any insights.

Steve
-- 
This message posted from opensolaris.org
_______________________________________________
zfs-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/zfs-code

Reply via email to