]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: add some mark_delayed for some delay events. 5293/head
authorJianpeng Ma <jianpeng.ma@intel.com>
Mon, 20 Jul 2015 05:46:12 +0000 (13:46 +0800)
committerJianpeng Ma <jianpeng.ma@intel.com>
Mon, 20 Jul 2015 05:46:12 +0000 (13:46 +0800)
Signed-off-by: Jianpeng Ma <jianpeng.ma@intel.com>
src/osd/OSD.cc
src/osd/PG.cc
src/osd/ReplicatedPG.cc

index 7c2d8501a969b6a29ffddc52e7574ebcf935e2f5..f45720219c6d8bf61f62f4ad84748d41de0d7628 100644 (file)
@@ -5790,11 +5790,12 @@ void OSD::_dispatch(Message *m)
   default:
     {
       OpRequestRef op = op_tracker.create_request<OpRequest, Message*>(m);
-      op->mark_event("waiting_for_osdmap");
       // no map?  starting up?
       if (!osdmap) {
         dout(7) << "no OSDMap, not booted" << dendl;
+       logger->inc(l_osd_waiting_for_map);
         waiting_for_osdmap.push_back(op);
+       op->mark_delayed("no osdmap");
         break;
       }
       
index 747c187eda4029087ea6ab49565bf4af0e926e17..58684d19550ab543729c24d854eca67208e45e34 100644 (file)
@@ -1835,10 +1835,12 @@ void PG::queue_op(OpRequestRef& op)
   if (!waiting_for_map.empty()) {
     // preserve ordering
     waiting_for_map.push_back(op);
+    op->mark_delayed("waiting_for_map not empty");
     return;
   }
   if (op_must_wait_for_map(get_osdmap_with_maplock()->get_epoch(), op)) {
     waiting_for_map.push_back(op);
+    op->mark_delayed("op must wait for map");
     return;
   }
   op->mark_queued_for_pg();
index 7ad5d7ca471483e6856806d9c1c49568b53a71e4..81e959b40036dee89d16946d11e6b1891e8d2095 100644 (file)
@@ -1252,6 +1252,7 @@ void ReplicatedPG::do_request(
             << " flushes_in_progress pending "
             << "waiting for active on " << op << dendl;
     waiting_for_peered.push_back(op);
+    op->mark_delayed("waiting for peered");
     return;
   }
 
@@ -1263,6 +1264,7 @@ void ReplicatedPG::do_request(
       return;
     } else {
       waiting_for_peered.push_back(op);
+      op->mark_delayed("waiting for peered");
       return;
     }
   }
@@ -1276,6 +1278,7 @@ void ReplicatedPG::do_request(
     if (!is_active()) {
       dout(20) << " peered, not active, waiting for active on " << op << dendl;
       waiting_for_active.push_back(op);
+      op->mark_delayed("waiting for active");
       return;
     }
     if (is_replay()) {