From: Greg Farnum Date: Tue, 1 Oct 2013 20:13:44 +0000 (-0700) Subject: ReplicatedPG: copy: add CopyCallback pointer to CopyOp, and set it up X-Git-Tag: v0.71~22^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=613841a6703bbf198b971dd3fdeda15446cabe82;p=ceph.git ReplicatedPG: copy: add CopyCallback pointer to CopyOp, and set it up We'll start using it in the next commit; eventually we can use the interfaces we're putting their to replace our link to the OpContext. Signed-off-by: Greg Farnum --- diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc index efc1cf8f603a..f83f2312bf33 100644 --- a/src/osd/ReplicatedPG.cc +++ b/src/osd/ReplicatedPG.cc @@ -3765,7 +3765,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector& ops) break; } hobject_t temp_target = generate_temp_object(); - result = start_copy(ctx, ctx->obc, src, src_oloc, src_version, + CopyFromCallback *cb = new CopyFromCallback(ctx, temp_target); + result = start_copy(ctx, cb, ctx->obc, src, src_oloc, src_version, temp_target); if (result < 0) goto fail; @@ -4381,7 +4382,7 @@ struct C_Copyfrom : public Context { } }; -int ReplicatedPG::start_copy(OpContext *ctx, ObjectContextRef obc, +int ReplicatedPG::start_copy(OpContext *ctx, CopyCallback *cb, ObjectContextRef obc, hobject_t src, object_locator_t oloc, version_t version, const hobject_t& temp_dest_oid) { @@ -4398,7 +4399,7 @@ int ReplicatedPG::start_copy(OpContext *ctx, ObjectContextRef obc, cancel_copy(cop); } - CopyOpRef cop(new CopyOp(ctx, obc, src, oloc, version, temp_dest_oid)); + CopyOpRef cop(new CopyOp(ctx, cb, obc, src, oloc, version, temp_dest_oid)); copy_ops[dest] = cop; ctx->copy_op = cop; ++obc->copyfrom_readside; diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h index a93f53be4144..6ca252214c0b 100644 --- a/src/osd/ReplicatedPG.h +++ b/src/osd/ReplicatedPG.h @@ -97,6 +97,7 @@ public: struct CopyOp { OpContext *ctx; + CopyCallback *cb; ObjectContextRef obc; hobject_t src; object_locator_t oloc; @@ -116,9 +117,9 @@ public: hobject_t temp_oid; object_copy_cursor_t temp_cursor; - CopyOp(OpContext *c, ObjectContextRef _obc, hobject_t s, object_locator_t l, + CopyOp(OpContext *c, CopyCallback *cb_, ObjectContextRef _obc, hobject_t s, object_locator_t l, version_t v, const hobject_t& dest) - : ctx(c), obc(_obc), src(s), oloc(l), version(v), + : ctx(c), cb(cb_), obc(_obc), src(s), oloc(l), version(v), objecter_tid(0), size(0), rval(-1), @@ -179,7 +180,7 @@ public: hobject_t temp_obj; CopyFromCallback(OpContext *ctx_, const hobject_t& temp_obj_) : ctx(ctx_), temp_obj(temp_obj_) {} - void copy_complete_ops(ObjectStore::Transaction& t); + void copy_complete_ops(ObjectStore::Transaction& t) {} ~CopyFromCallback() {} }; @@ -782,7 +783,7 @@ protected: // -- copyfrom -- map copy_ops; - int start_copy(OpContext *ctx, ObjectContextRef obc, hobject_t src, + int start_copy(OpContext *ctx, CopyCallback *cb, ObjectContextRef obc, hobject_t src, object_locator_t oloc, version_t version, const hobject_t& temp_dest_oid); void process_copy_chunk(hobject_t oid, tid_t tid, int r);