refs);
bool need_inc_ref = false;
if (!refs.is_empty()) {
- ManifestOpRef mop = std::make_shared<ManifestOp>(new RefCountCallback(ctx, osd_op));
+ ManifestOpRef mop(std::make_shared<ManifestOp>());
for (auto c : set_chunk.chunk_map) {
auto p = refs.find(c.second.oid);
if (p == refs.end()) {
}
}
if (mop->tids.size()) {
+ mop->cb = new RefCountCallback(ctx, osd_op);
manifest_ops[ctx->obs->oi.soid] = mop;
manifest_ops[ctx->obs->oi.soid]->op = ctx->op;
}
* The operations to make dedup chunks are tracked by a ManifestOp.
* This op will be finished if all the operations are completed.
*/
- ManifestOpRef mop(std::make_shared<ManifestOp>(nullptr));
+ ManifestOpRef mop(std::make_shared<ManifestOp>());
// cdc
std::map<uint64_t, bufferlist> chunks;
friend struct RefCountCallback;
struct ManifestOp {
- RefCountCallback *cb;
- ceph_tid_t objecter_tid;
+ RefCountCallback *cb = nullptr;
+ ceph_tid_t objecter_tid = 0;
OpRequestRef op;
std::map<uint64_t, int> results;
std::map<uint64_t, ceph_tid_t> tids;
ManifestOp(RefCountCallback* cb)
- : cb(cb), objecter_tid(0) {}
+ : cb(cb) {}
+ ManifestOp() = default;
};
typedef std::shared_ptr<ManifestOp> ManifestOpRef;
std::map<hobject_t, ManifestOpRef> manifest_ops;