]>
git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
os/bluestore: _txc_create inside of alloc_and_submit_lock
Create the transaction inside of the SMR lock. Otherwise, we may get a
deadlock between the cleaner C and a normal write op W:
W C
_txc_create seq 1
lock alloc_and_submit
_txc_create seq 2
...
unlock alloc_and_submit
lock alloc_and_submit
...
block on flush
_txc_finish_io, but blocked by seq 1
<deadlock>
The root issue here is the txc's are misordered with respect to the
alloc_and_submit lock.
Fix by moving the _txc_create inside the lock!
Signed-off-by: Sage Weil <sage@newdream.net>