C_MDS_RetryRequest inherits from MDSInternalContext which does not
acquire mds_lock by itself. Adding to MDSRank wait queue will process
this via the progress thread which completes the context with mds_lock
acquired.
Fixes: http://tracker.ceph.com/issues/76031
Signed-off-by: Venky Shankar <vshankar@redhat.com>
if (!new_batch_head) {
mdr->batch_op_map->erase(it);
} else {
- mds->finisher->queue(new C_MDS_RetryRequest(this, new_batch_head));
+ mds->queue_waiter(new C_MDS_RetryRequest(this, new_batch_head));
}
}