summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-09-30 16:20:26 -0700
committerGreg Farnum <greg@inktank.com>2013-10-01 13:29:23 -0700
commit6ed8b7ae56d88c586e3d359e649b41b892d3cee1 (patch)
tree734bfe11956f0a8becaec054638122053785d38c
parent5307703bf18fea717f9daadba1c1653a5a30b716 (diff)
downloadceph-6ed8b7ae56d88c586e3d359e649b41b892d3cee1.tar.gz
ReplicatedPG: copy: add an ObjectContextRef to CopyOp
Use that instead of the OpContext::obc in copy codepaths. Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r--src/osd/ReplicatedPG.cc15
-rw-r--r--src/osd/ReplicatedPG.h5
2 files changed, 10 insertions, 10 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index feee6de920f..aba0a1067c0 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -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;
}
diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h
index f6898d80f13..c968ad3ea2f 100644
--- a/src/osd/ReplicatedPG.h
+++ b/src/osd/ReplicatedPG.h
@@ -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)