On Sun, Apr 6, 2014 at 6:29 PM, Jorgen Lundman <[email protected]> wrote:

>
> If indeed nested dmu_txg is not feasible.
>

A given thread can only process one transaction at a time.  I.e. it is not
valid for a given thread to do:
dmu_tx_assign(tx1)
dmu_tx_assign(tx2)
dmu_tx_commit(...)

Because this could result in deadlock.  The 2nd dmu_tx_assign() could need
to wait for a txg to sync, which could need to wait for tx1's txg to
quiesce, which would wait for tx1 to commit.

You must do:
dmu_tx_assign(tx1)
dmu_tx_commit(tx1)
dmu_tx_assign(tx2)
dmu_tx_commit(tx2)


--matt
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to