mirror of
https://github.com/ceph/ceph
synced 2025-02-22 18:47:18 +00:00
ReplicatedPG::release_op_ctx_locks: requeue in scrub queue if blocked
Otherwise we can reorder an op around another op which got blocked by a scrub which started after the first blocked on an obc. Fixes: #11691 Signed-off-by: Samuel Just <sjust@redhat.com>
This commit is contained in:
parent
5c2b795724
commit
be873eb8da
@ -866,7 +866,20 @@ protected:
|
||||
requeue_snaptrimmer_clone ||
|
||||
requeue_snaptrimmer_snapset)
|
||||
queue_snap_trim();
|
||||
requeue_ops(to_req);
|
||||
|
||||
if (!to_req.empty()) {
|
||||
assert(ctx->obc);
|
||||
// requeue at front of scrub blocking queue if we are blocked by scrub
|
||||
if (scrubber.write_blocked_by_scrub(ctx->obc->obs.oi.soid.get_head())) {
|
||||
waiting_for_active.splice(
|
||||
waiting_for_active.begin(),
|
||||
to_req,
|
||||
to_req.begin(),
|
||||
to_req.end());
|
||||
} else {
|
||||
requeue_ops(to_req);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// replica ops
|
||||
|
Loading…
Reference in New Issue
Block a user