return true;
}
-struct C_ScrubDigestUpdated : public Context {
- ReplicatedPGRef pg;
- explicit C_ScrubDigestUpdated(ReplicatedPG *pg) : pg(pg) {}
- void finish(int r) {
- pg->_scrub_digest_updated();
- }
-};
-
-void ReplicatedPG::_scrub_digest_updated()
-{
- dout(20) << __func__ << dendl;
- if (--scrubber.num_digest_updates_pending == 0) {
- requeue_scrub();
- }
-}
-
static bool doing_clones(const boost::optional<SnapSet> &snapset,
const vector<snapid_t>::reverse_iterator &curclone) {
return snapset && curclone != snapset.get().clones.rend();
ctx->new_obs.oi.set_data_digest(p->second.first);
ctx->new_obs.oi.set_omap_digest(p->second.second);
finish_ctx(ctx.get(), pg_log_entry_t::MODIFY, true, true);
- ctx->on_finish = new C_ScrubDigestUpdated(this);
+
+ ctx->register_on_success(
+ [this]() {
+ dout(20) << "updating scrub digest" << dendl;
+ if (--scrubber.num_digest_updates_pending == 0) {
+ requeue_scrub();
+ }
+ });
+
simple_opc_submit(std::move(ctx));
++scrubber.num_digest_updates_pending;
}
virtual void _scrub(
ScrubMap &map,
const std::map<hobject_t, pair<uint32_t, uint32_t>, hobject_t::BitwiseComparator> &missing_digest);
- void _scrub_digest_updated();
virtual void _scrub_clear_state();
virtual void _scrub_finish();
object_stat_collection_t scrub_cstat;