yige-hu Kernel patch to resolve hanging in some multi-threaded scenarios:
f3f597d Jan 12, 2019
Kernel patch to resolve hanging in some multi-threaded scenarios:
1. Need to diable softirq during the commit and abort. Otherwise, a
signel, such as SIGINT can kill the process uncommitted, which calls
do_exit() -> fs_tx_abort_tsk() and may double-free the data structures.

2. Cannot use busy waiting on the buffer states. Otherwise, there could
be a case in which all CPU threads are waiting on spinlocks, while one
of the threads is waiting on I/O. After submitting the bio, it busy
waits for the buffer state change. However, no CPU resources can be
scheduled to execute the bottom half after the I/O is finished.
    I used to change those threads to busy waits on the buffer state
changes if they're committing a transaction, because transaction commit
holds spinlocks then mutex-s. It is a atomic session. A interrupt with
the same set of spinlocks can make the thread deadlock. But now I've
disabled softirq-s while committing a transaction.

3. Remove redundant code on fs_txabort_tsk.
f3f597d