From: Sage Weil Date: Fri, 3 Feb 2017 20:52:29 +0000 (-0500) Subject: messages/MOSDOp: add get_raw_pg() X-Git-Tag: v12.0.1~383^2~22 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6b653974657decdb947792a982bcd4f851322409;p=ceph.git messages/MOSDOp: add get_raw_pg() Many current users expect a full hash value; make that explicit. Signed-off-by: Sage Weil --- diff --git a/src/messages/MOSDOp.h b/src/messages/MOSDOp.h index 1027f9faaf47..257cfadf32b0 100755 --- a/src/messages/MOSDOp.h +++ b/src/messages/MOSDOp.h @@ -79,10 +79,14 @@ public: } // Fields decoded in partial decoding - const pg_t& get_pg() const { + pg_t get_pg() const { assert(!partial_decode_needed); return pgid; } + pg_t get_raw_pg() const { + assert(!partial_decode_needed); + return pg_t(hobj.get_hash(), hobj.pool); + } epoch_t get_map_epoch() const { assert(!partial_decode_needed); return osdmap_epoch; diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc index c101a2b8d1ca..c645424ec1f0 100644 --- a/src/osd/OSD.cc +++ b/src/osd/OSD.cc @@ -1422,7 +1422,7 @@ void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op) << m->get_map_epoch() << ", dropping" << dendl; return; } - pg_t _pgid = m->get_pg(); + pg_t _pgid = m->get_raw_pg(); spg_t pgid; if ((m->get_flags() & CEPH_OSD_FLAG_PGOP) == 0) _pgid = opmap->raw_pg_to_pg(_pgid); @@ -1436,7 +1436,7 @@ void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op) dout(7) << *pg << " misdirected op in " << m->get_map_epoch() << dendl; clog->warn() << m->get_source_inst() << " misdirected " << m->get_reqid() - << " pg " << m->get_pg() + << " pg " << m->get_raw_pg() << " to osd." << whoami << " not " << pg->acting << " in e" << m->get_map_epoch() << "/" << osdmap->get_epoch() @@ -8788,7 +8788,7 @@ void OSD::handle_op(OpRequestRef& op, OSDMapRef& osdmap) } // calc actual pgid - pg_t _pgid = m->get_pg(); + pg_t _pgid = m->get_raw_pg(); int64_t pool = _pgid.pool(); if ((m->get_flags() & CEPH_OSD_FLAG_PGOP) == 0 && @@ -8826,7 +8826,7 @@ void OSD::handle_op(OpRequestRef& op, OSDMapRef& osdmap) if (!send_map->have_pg_pool(pgid.pool())) { dout(7) << "dropping request; pool did not exist" << dendl; clog->warn() << m->get_source_inst() << " invalid " << m->get_reqid() - << " pg " << m->get_pg() + << " pg " << m->get_raw_pg() << " to osd." << whoami << " in e" << osdmap->get_epoch() << ", client e" << m->get_map_epoch() @@ -8837,7 +8837,7 @@ void OSD::handle_op(OpRequestRef& op, OSDMapRef& osdmap) if (!send_map->osd_is_valid_op_target(pgid.pgid, whoami)) { dout(7) << "we are invalid target" << dendl; clog->warn() << m->get_source_inst() << " misdirected " << m->get_reqid() - << " pg " << m->get_pg() + << " pg " << m->get_raw_pg() << " to osd." << whoami << " in e" << osdmap->get_epoch() << ", client e" << m->get_map_epoch() diff --git a/src/osd/OSD.h b/src/osd/OSD.h index e2d35f01d32b..c0081b07835a 100644 --- a/src/osd/OSD.h +++ b/src/osd/OSD.h @@ -1406,7 +1406,7 @@ public: switch (op->get_req()->get_type()) { case CEPH_MSG_OSD_OP: return (static_cast( - op->get_req())->get_pg().m_seed & mask) == match; + op->get_req())->get_raw_pg().m_seed & mask) == match; } return false; }