]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
messages/MOSDOp: add get_raw_pg()
authorSage Weil <sage@redhat.com>
Fri, 3 Feb 2017 20:52:29 +0000 (15:52 -0500)
committerSage Weil <sage@redhat.com>
Tue, 14 Feb 2017 04:03:50 +0000 (23:03 -0500)
Many current users expect a full hash value; make that explicit.

Signed-off-by: Sage Weil <sage@redhat.com>
src/messages/MOSDOp.h
src/osd/OSD.cc
src/osd/OSD.h

index 1027f9faaf47b9b6eda7807b42470f1f6ef8c279..257cfadf32b0e6bde7426693e18c91bb88d031c0 100755 (executable)
@@ -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;
index c101a2b8d1cac3f1a8cd2021394c5fe677d2032d..c645424ec1f01affac5ecfa2833237984ba6a059 100644 (file)
@@ -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()
index e2d35f01d32bebf5cd41adc4ba68a6ba718b6174..c0081b07835a776b5642566bf1b370d08556d7ec 100644 (file)
@@ -1406,7 +1406,7 @@ public:
     switch (op->get_req()->get_type()) {
     case CEPH_MSG_OSD_OP:
       return (static_cast<MOSDOp*>(
-               op->get_req())->get_pg().m_seed & mask) == match;
+               op->get_req())->get_raw_pg().m_seed & mask) == match;
     }
     return false;
   }