Using apply_transaction when holding the pg lock is not safe.
It was fixed in master (mimic) during os, osd refactoring, and this
commit is a partial backport of
907b6281e99ece3677dd7b012cf4955731db6120.
Fixes: http://tracker.ceph.com/issues/36630
Signed-off-by: Mykola Golub <mgolub@suse.com>
bool done;
t.register_on_applied_sync(
new C_SafeCond(&my_lock, &my_cond, &done, &r));
- r = osd->store->apply_transaction(osr.get(), std::move(t));
+ r = osd->store->queue_transaction(osr.get(), std::move(t), nullptr);
if (r != 0) {
derr << __func__ << ": apply_transaction got " << cpp_strerror(r)
<< dendl;