]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ReplicatedPG: copy: add an ObjectContextRef to CopyOp
authorGreg Farnum <greg@inktank.com>
Mon, 30 Sep 2013 23:20:26 +0000 (16:20 -0700)
committerGreg Farnum <greg@inktank.com>
Tue, 1 Oct 2013 20:29:23 +0000 (13:29 -0700)
Use that instead of the OpContext::obc in copy codepaths.

Signed-off-by: Greg Farnum <greg@inktank.com>
src/osd/ReplicatedPG.cc
src/osd/ReplicatedPG.h

index feee6de920f5c549037674835cd510f4644e32e9..aba0a1067c00797d33804bb4f7812df6e1f04e08 100644 (file)
@@ -4395,7 +4395,7 @@ int ReplicatedPG::start_copy(OpContext *ctx,
     cancel_copy(cop);
   }
 
-  CopyOpRef cop(new CopyOp(ctx, src, oloc, version));
+  CopyOpRef cop(new CopyOp(ctx, ctx->obc, src, oloc, version));
   copy_ops[dest] = cop;
   ctx->copy_op = cop;
   ++ctx->obc->copyfrom_readside;
@@ -4449,8 +4449,7 @@ void ReplicatedPG::process_copy_chunk(hobject_t oid, tid_t tid, int r)
             << " tid " << cop->objecter_tid << dendl;
     return;
   }
-  OpContext *ctx = cop->ctx;
-  ObjectContextRef obc = ctx->obc;
+  ObjectContextRef obc = cop->obc;
   cop->objecter_tid = 0;
 
   if (r >= 0) {
@@ -4484,11 +4483,11 @@ void ReplicatedPG::process_copy_chunk(hobject_t oid, tid_t tid, int r)
   }
 
   dout(20) << __func__ << " complete; committing" << dendl;
-  execute_ctx(ctx);
+  execute_ctx(cop->ctx);
 
   copy_ops.erase(obc->obs.oi.soid);
   --obc->copyfrom_readside;
-  ctx->copy_op.reset();
+  cop->ctx->copy_op.reset();
   kick_object_context_blocked(obc);
 }
 
@@ -4571,11 +4570,11 @@ void ReplicatedPG::cancel_copy(CopyOpRef cop)
     osd->objecter->op_cancel(cop->objecter_tid);
   }
 
-  copy_ops.erase(ctx->obc->obs.oi.soid);
-  --ctx->obc->copyfrom_readside;
+  copy_ops.erase(cop->obc->obs.oi.soid);
+  --cop->obc->copyfrom_readside;
   ctx->copy_op.reset();
 
-  kick_object_context_blocked(ctx->obc);
+  kick_object_context_blocked(cop->obc);
 
   delete ctx;
 }
index f6898d80f13e96d6fa67b5f45039fca104107fd5..c968ad3ea2fcd8881919dbc34f621b3a2a25a5e2 100644 (file)
@@ -96,6 +96,7 @@ public:
 
   struct CopyOp {
     OpContext *ctx;
+    ObjectContextRef obc;
     hobject_t src;
     object_locator_t oloc;
     version_t version;
@@ -114,8 +115,8 @@ public:
     hobject_t temp_oid;
     object_copy_cursor_t temp_cursor;
 
-    CopyOp(OpContext *c, hobject_t s, object_locator_t l, version_t v)
-      : ctx(c), src(s), oloc(l), version(v),
+    CopyOp(OpContext *c, ObjectContextRef _obc, hobject_t s, object_locator_t l, version_t v)
+      : ctx(c), obc(_obc), src(s), oloc(l), version(v),
        objecter_tid(0),
        size(0),
        rval(-1)