atalur: txn-0 can start a non-blocking lock call only if no other txn-x has already failed a non-blocking call (this means that sequential blocking lock calls will be sent, so no need to send a non-blocking one). Otherwise it must wait until 2 requests have been seen by all txn-x xlators (as specified in gf_txn_prepare())

atalur: anyway, txn-xlators will also use library calls that will be aware of the global state of the transaction. It will be that library function who will issue the requests on behalf of the txn-xlators

atalur: a possible expansion would be to allow the user xlator to add custom inodes to the transaction, even if not needed for one fop. This would allow the execution of complex transactions that require multiple fops

atalur: I also need to work on it deeper, but I think there are two very interesting features: 1. Very easy to use api for user xlators, and 2. user xlator doesn't need to implement callbacks for transactions. It can create a transaction and immediately send the request