diff mbox

cosd multi-second stalls cause "wrongly marked me down"

Message ID 1297985503.25491.175.camel@sale659.sandia.gov (mailing list archive)
State New, archived
Headers show

Commit Message

Jim Schutt Feb. 17, 2011, 11:31 p.m. UTC
None
diff mbox

Patch

diff --git a/src/osd/OSD.cc b/src/osd/OSD.cc
index 76b8af8..dab6054 100644
--- a/src/osd/OSD.cc
+++ b/src/osd/OSD.cc
@@ -1530,8 +1530,10 @@  void OSD::tick()
 
   // periodically kick recovery work queue
   recovery_tp.kick();
-  
+
+  dout(20) << "tick getting read lock on map_lock" << dendl;
   map_lock.get_read();
+  dout(20) << "tick got read lock on map_lock" << dendl;
 
   if (scrub_should_schedule()) {
     sched_scrub();
@@ -1544,11 +1546,13 @@  void OSD::tick()
   check_replay_queue();
 
   // mon report?
+  dout(20) << "tick sending mon report" << dendl;
   utime_t now = g_clock.now();
   if (now - last_mon_report > g_conf.osd_mon_report_interval)
     do_mon_report();
 
   // remove stray pgs?
+  dout(20) << "tick removing stray pgs" << dendl;
   remove_list_lock.Lock();
   for (map<epoch_t, map<int, vector<pg_t> > >::iterator p = remove_list.begin();
        p != remove_list.end();
@@ -1566,19 +1570,23 @@  void OSD::tick()
 
   map_lock.put_read();
 
+  dout(20) << "tick sending log to logclient" << dendl;
   logclient.send_log();
 
+  dout(20) << "tick arming timer for next tick" << dendl;
   timer.add_event_after(1.0, new C_Tick(this));
 
   // only do waiters if dispatch() isn't currently running.  (if it is,
   // it'll do the waiters, and doing them here may screw up ordering
   // of op_queue vs handle_osd_map.)
+  dout(20) << "tick checking dispatch queue status" << dendl;
   if (!dispatch_running) {
     dispatch_running = true;
     do_waiters();
     dispatch_running = false;
     dispatch_cond.Signal();
   }
+  dout(20) << "tick done" << dendl;
 }
 
Check out the result: