replace tx_lock with per-desc lock