summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-10-01 13:13:44 -0700
committerGreg Farnum <greg@inktank.com>2013-10-01 16:51:33 -0700
commit613841a6703bbf198b971dd3fdeda15446cabe82 (patch)
treefcf04fbaa589ccbc698b0a3adae939966f332e4f
parent0b472766f11e3bf30012d2958bf0564aa9354e17 (diff)
downloadceph-613841a6703bbf198b971dd3fdeda15446cabe82.tar.gz
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 <greg@inktank.com>
-rw-r--r--src/osd/ReplicatedPG.cc7
-rw-r--r--src/osd/ReplicatedPG.h9
2 files changed, 9 insertions, 7 deletions
diff --git a/src/osd/ReplicatedPG.cc b/src/osd/ReplicatedPG.cc
index efc1cf8f603..f83f2312bf3 100644
--- a/src/osd/ReplicatedPG.cc
+++ b/src/osd/ReplicatedPG.cc
@@ -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;
diff --git a/src/osd/ReplicatedPG.h b/src/osd/ReplicatedPG.h
index a93f53be414..6ca252214c0 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<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);