otherwise it is likely to race with any follow-up scrubbing activities.
Note that it's ok for us to requeue_scrub before re-executing the op
since scrubbing will be blocking for the (same) global pg lock we
are currently holding.
Fixes: https://tracker.ceph.com/issues/41427
Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
: ctx(ctx), osd_op(osd_op) {}
void finish(int r) override {
// NB: caller must already have pg->lock held
+ ctx->obc->stop_block();
+ ctx->pg->kick_object_context_blocked(ctx->obc);
if (r >= 0) {
osd_op.rval = 0;
ctx->pg->execute_ctx(ctx);
flags, c);
if (cb) {
manifest_ops[obc->obs.oi.soid] = std::make_shared<ManifestOp>(cb, tid);
+ obc->start_block();
}
}