From: Yan, Zheng Date: Sat, 28 Apr 2018 09:00:09 +0000 (+0800) Subject: mds: don't report slow request for blocked filelock request X-Git-Tag: v13.1.0~18^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e4160d7e783e086a044926faddcc6023713749bf;p=ceph-ci.git mds: don't report slow request for blocked filelock request Signed-off-by: "Yan, Zheng" Fixes: http://tracker.ceph.com/issues/22428 --- diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index e937723b5f0..feb3e9f7308 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -350,6 +350,8 @@ bool OpTracker::with_slow_ops_in_flight(utime_t* oldest_secs, // 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 @@ -398,7 +400,8 @@ bool OpTracker::check_ops_in_flight(std::string* summary, 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 > " diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 1a34507d1b5..2e3cc09a22c 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -362,6 +362,10 @@ public: 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(); diff --git a/src/mds/Server.cc b/src/mds/Server.cc index 347a5c33ff4..72032c7b336 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -4110,6 +4110,8 @@ void Server::handle_client_file_setlock(MDRequestRef& mdr) 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