]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: simplify helper usage for misdirected ops
authorSage Weil <sage@inktank.com>
Sat, 14 Jul 2012 21:29:29 +0000 (14:29 -0700)
committerSage Weil <sage@inktank.com>
Sun, 15 Jul 2012 00:39:33 +0000 (17:39 -0700)
Make the helper exclusively for the PG != NULL cases, and open-code the
one PG == NULL caller.  This is simpler, and lets us include more useful
information in the log message.

Signed-off-by: Sage Weil <sage@inktank.com>
src/osd/OSD.cc

index 44b155f2fdbc1115010ebd510e4ea9cf9dbebc11..8a5d04016acc9f037e2b6fd560d0ab1e6f8aa617 100644 (file)
@@ -4984,26 +4984,18 @@ void OSDService::handle_misdirected_op(PG *pg, OpRequestRef op)
 {
   MOSDOp *m = (MOSDOp*)op->request;
   assert(m->get_header().type == CEPH_MSG_OSD_OP);
-  if (pg) {
-    if (m->get_map_epoch() < pg->info.history.same_primary_since) {
-      dout(7) << *pg << " changed after " << m->get_map_epoch() << ", dropping" << dendl;
-      return;
-    } else {
-      dout(7) << *pg << " misdirected op in " << m->get_map_epoch() << dendl;
-      clog.warn() << m->get_source_inst() << " misdirected "
-          << m->get_reqid() << " " << pg->info.pgid << " to osd." << whoami
-          << " not " << pg->acting
-          << " in e" << m->get_map_epoch() << "/" << osdmap->get_epoch()
-          << "\n";
-    }
-  } else {
-    dout(7) << "got misdirected op from " << m->get_source_inst()
-            << " for pgid " << m->get_pg() << dendl;
-    clog.warn() << m->get_source_inst() << " misdirected "
-                << m->get_reqid() << " pg " << m->get_pg()
-                << " to osd." << whoami
-                << " in e" << m->get_map_epoch() << "\n";
+
+  if (m->get_map_epoch() < pg->info.history.same_primary_since) {
+    dout(7) << *pg << " changed after " << m->get_map_epoch() << ", dropping" << dendl;
+    return;
   }
+
+  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()
+             << " to osd." << whoami
+             << " not " << pg->acting
+             << " in e" << m->get_map_epoch() << "/" << osdmap->get_epoch() << "\n";
   reply_op_error(op, -ENXIO);
 }
 
@@ -5106,7 +5098,15 @@ void OSD::handle_op(OpRequestRef op)
       dout(7) << "dropping request; client will resend when they get new map" << dendl;
     } else {
       dout(7) << "we are invalid target" << dendl;
-      service.handle_misdirected_op(NULL, op);
+      clog.warn() << m->get_source_inst() << " misdirected " << m->get_reqid()
+                 << " pg " << m->get_pg()
+                 << " to osd." << whoami
+                 << " in e" << osdmap->get_epoch()
+                 << ", client e" << m->get_map_epoch()
+                 << " pg " << pgid
+                 << " features " << m->get_connection()->get_features()
+                 << "\n";
+      service.reply_op_error(op, -ENXIO);
     }
     return;
   } else if (!op_has_sufficient_caps(pg, m)) {