]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: copy: add CopyCallback pointer to CopyOp, and set it up
authorGreg Farnum <greg@inktank.com>
Tue, 1 Oct 2013 20:13:44 +0000 (13:13 -0700)
committerGreg Farnum <greg@inktank.com>
Tue, 1 Oct 2013 23:51:33 +0000 (16:51 -0700)
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 <greg@inktank.com>
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index efc1cf8f603a0cab5fa8637e71aec57731045706..f83f2312bf33c8508c3d845943921745b8e7ab17 100644 (file)
@@ -3765,7 +3765,8 @@ int ReplicatedPG::do_osd_ops(OpContext *ctx, vector<OSDOp>& 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;
index a93f53be4144922320dcaf8bbd8c53e7436288ab..6ca252214c0b6e8891a25dd40024b32cc77a8bfa 100644 (file)
@@ -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<hobject_t, CopyOpRef> 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);