summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-08-29 13:12:41 -0700
committerGreg Farnum <greg@inktank.com>2013-08-30 14:06:33 -0700
commit665acc11acf5daed9889b6f6de184cd44aa09c88 (patch)
treee2a10b7318dd412d0f89291310e8853a4edcfa84
parente2fcad09d94d965867147627b73e99da9454436f (diff)
downloadceph-665acc11acf5daed9889b6f6de184cd44aa09c88.tar.gz
Objecter: add an Op::target_oloc and use it instead of base_oloc in send_op()
For now we simply set target_oloc = base_oloc in recalc_op_target(), but we will shortly be doing more interesting things with it there. Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r--src/osdc/Objecter.cc8
-rw-r--r--src/osdc/Objecter.h1
2 files changed, 6 insertions, 3 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index 24ddc04ba62..888d0694470 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -1243,7 +1243,7 @@ tid_t Objecter::_op_submit(Op *op)
// send?
ldout(cct, 10) << "op_submit oid " << op->oid
- << " " << op->base_oloc
+ << " " << op->base_oloc << " " << op->target_oloc
<< " " << op->ops << " tid " << op->tid
<< " osd." << (op->session ? op->session->osd : -1)
<< dendl;
@@ -1297,12 +1297,13 @@ int Objecter::recalc_op_target(Op *op)
{
vector<int> acting;
pg_t pgid = op->pgid;
+ op->target_oloc = op->base_oloc;
if (op->precalc_pgid) {
ldout(cct, 10) << "recalc_op_target have " << pgid << " pool " << osdmap->have_pg_pool(pgid.pool()) << dendl;
if (!osdmap->have_pg_pool(pgid.pool()))
return RECALC_OP_TARGET_POOL_DNE;
} else {
- int ret = osdmap->object_locator_to_pg(op->oid, op->base_oloc, pgid);
+ int ret = osdmap->object_locator_to_pg(op->oid, op->target_oloc, pgid);
if (ret == -ENOENT)
return RECALC_OP_TARGET_POOL_DNE;
}
@@ -1444,7 +1445,7 @@ void Objecter::send_op(Op *op)
op->stamp = ceph_clock_now(cct);
MOSDOp *m = new MOSDOp(client_inc, op->tid,
- op->oid, op->base_oloc, op->pgid, osdmap->get_epoch(),
+ op->oid, op->target_oloc, op->pgid, osdmap->get_epoch(),
flags);
m->set_snapid(op->snapid);
@@ -2211,6 +2212,7 @@ void Objecter::dump_ops(Formatter *fmt) const
fmt->dump_int("attempts", op->attempts);
fmt->dump_stream("object_id") << op->oid;
fmt->dump_stream("object_locator") << op->base_oloc;
+ fmt->dump_stream("target_object_locator") << op->target_oloc;
fmt->dump_stream("snapid") << op->snapid;
fmt->dump_stream("snap_context") << op->snapc;
fmt->dump_stream("mtime") << op->mtime;
diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h
index d38487dcda8..be756054497 100644
--- a/src/osdc/Objecter.h
+++ b/src/osdc/Objecter.h
@@ -746,6 +746,7 @@ public:
object_t oid;
object_locator_t base_oloc;
+ object_locator_t target_oloc;
pg_t pgid;
vector<int> acting;