diff options
author | Greg Farnum <greg@inktank.com> | 2013-09-03 14:42:14 -0700 |
---|---|---|
committer | Greg Farnum <greg@inktank.com> | 2013-09-10 15:33:48 -0700 |
commit | a45612c202cf0364d16f082861b7d3971713373f (patch) | |
tree | 09c40d69ec7c6054dc61b01064ee1cdec5001b0f | |
parent | 79f02d6b8f57b6c33996aae452b7d6ddec04e97a (diff) | |
download | ceph-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.cc | 6 | ||||
-rw-r--r-- | src/osdc/Objecter.h | 1 |
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; |