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>
(cherry picked from commit
be873eb8da7b29ecefaa5a99b88de7ddcca711ee)
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