return nullptr;
}
-void PrimaryLogPG::dec_refcount(ObjectContextRef obc, const object_ref_delta_t& refs)
+void PrimaryLogPG::dec_refcount(const hobject_t& soid, const object_ref_delta_t& refs)
{
for (auto p = refs.begin(); p != refs.end(); ++p) {
int dec_ref_count = p->second;
ceph_assert(dec_ref_count < 0);
while (dec_ref_count < 0) {
dout(10) << __func__ << ": decrement reference on offset oid: " << p->first << dendl;
- refcount_manifest(obc->obs.oi.soid, p->first,
+ refcount_manifest(soid, p->first,
refcount_t::DECREMENT_REF, NULL);
dec_ref_count++;
}
ceph_assert(ctx);
ctx->register_on_commit(
[soid, this, refs](){
- ObjectContextRef obc = get_object_context(soid, false, NULL);
- ceph_assert(obc);
- dec_refcount(obc, refs);
+ dec_refcount(soid, refs);
});
}
}
hobject_t soid = ctx->obc->obs.oi.soid;
ctx->register_on_commit(
[soid, this, refs](){
- ObjectContextRef obc = get_object_context(soid, false, NULL);
- ceph_assert(obc);
- dec_refcount(obc, refs);
+ dec_refcount(soid, refs);
});
}
} else if (oi.manifest.is_redirect()) {
void refcount_manifest(hobject_t src_soid, hobject_t tgt_soid, refcount_t type,
RefCountCallback* cb);
void dec_all_refcount_manifest(const object_info_t& oi, OpContext* ctx);
- void dec_refcount(ObjectContextRef obc, const object_ref_delta_t& refs);
+ void dec_refcount(const hobject_t& soid, const object_ref_delta_t& refs);
void dec_refcount_by_dirty(OpContext* ctx);
bool is_dedup_chunk(const object_info_t& oi, const chunk_info_t& chunk);
ObjectContextRef get_prev_clone_obc(ObjectContextRef obc);