summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Farnum <greg@inktank.com>2013-09-03 14:42:14 -0700
committerGreg Farnum <greg@inktank.com>2013-09-10 15:33:48 -0700
commita45612c202cf0364d16f082861b7d3971713373f (patch)
tree09c40d69ec7c6054dc61b01064ee1cdec5001b0f
parent79f02d6b8f57b6c33996aae452b7d6ddec04e97a (diff)
downloadceph-a45612c202cf0364d16f082861b7d3971713373f.tar.gz
Objecter: add an Op::target_oid, and use it when submitting Ops
For now it's just a copy of base_oid, but soon we will allow it to be overwritten for OSD-driven redirects. Signed-off-by: Greg Farnum <greg@inktank.com>
-rw-r--r--src/osdc/Objecter.cc6
-rw-r--r--src/osdc/Objecter.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc
index de4132d5319..34a02c0fb44 100644
--- a/src/osdc/Objecter.cc
+++ b/src/osdc/Objecter.cc
@@ -1328,6 +1328,7 @@ int Objecter::recalc_op_target(Op *op)
bool is_read = op->flags & CEPH_OSD_FLAG_READ;
bool is_write = op->flags & CEPH_OSD_FLAG_WRITE;
+ op->target_oid = op->base_oid;
op->target_oloc = op->base_oloc;
const pg_pool_t *pi = osdmap->get_pg_pool(op->base_oloc.pool);
if (pi) {
@@ -1343,7 +1344,7 @@ int Objecter::recalc_op_target(Op *op)
if (!osdmap->have_pg_pool(pgid.pool()))
return RECALC_OP_TARGET_POOL_DNE;
} else {
- int ret = osdmap->object_locator_to_pg(op->base_oid, op->target_oloc, pgid);
+ int ret = osdmap->object_locator_to_pg(op->target_oid, op->target_oloc, pgid);
if (ret == -ENOENT)
return RECALC_OP_TARGET_POOL_DNE;
}
@@ -1485,7 +1486,8 @@ void Objecter::send_op(Op *op)
op->stamp = ceph_clock_now(cct);
MOSDOp *m = new MOSDOp(client_inc, op->tid,
- op->base_oid, op->target_oloc, op->pgid, osdmap->get_epoch(),
+ op->target_oid, op->target_oloc, op->pgid,
+ osdmap->get_epoch(),
flags);
m->set_snapid(op->snapid);
diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h
index 9c9341ac4d2..f1c41e5e3f9 100644
--- a/src/osdc/Objecter.h
+++ b/src/osdc/Objecter.h
@@ -830,6 +830,7 @@ public:
object_t base_oid;
object_locator_t base_oloc;
+ object_t target_oid;
object_locator_t target_oloc;
pg_t pgid;