// no more slow ops in flight
       return false;
     }
+    if (!op.warn_interval_multiplier)
+      return true;
     slow++;
     if (warned >= log_threshold) {
       // enough samples of slow ops
     op.warn_interval_multiplier *= 2;
   };
   int slow = 0;
-  if (with_slow_ops_in_flight(&oldest_secs, &slow, &warned, warn_on_slow_op)) {
+  if (with_slow_ops_in_flight(&oldest_secs, &slow, &warned, warn_on_slow_op) &&
+      slow > 0) {
     stringstream ss;
     ss << slow << " slow requests, "
        << warned << " included below; oldest blocked for > "
 
   void mark_event(const char *event,
                  utime_t stamp=ceph_clock_now());
 
+  void mark_nowarn() {
+    warn_interval_multiplier = 0;
+  }
+
   virtual const char *state_string() const {
     Mutex::Locker l(lock);
     return events.rbegin()->c_str();
 
        mdr->more()->flock_was_waiting = true;
        mds->locker->drop_locks(mdr.get());
        mdr->drop_local_auth_pins();
+       mdr->mark_event("failed to add lock, waiting");
+       mdr->mark_nowarn();
        cur->add_waiter(CInode::WAIT_FLOCK, new C_MDS_RetryRequest(mdcache, mdr));
       }
     } else