From 02faf3dc321dfa782cac62ffa7e9f46f90feedbd Mon Sep 17 00:00:00 2001 From: "Yan, Zheng" Date: Sat, 28 Apr 2018 17:00:09 +0800 Subject: [PATCH] mds: don't report slow request for blocked filelock request Signed-off-by: "Yan, Zheng" Fixes: http://tracker.ceph.com/issues/22428 (cherry picked from commit e4160d7e783e086a044926faddcc6023713749bf) Conflicts: src/common/TrackedOp.cc --- src/common/TrackedOp.cc | 4 ++++ src/common/TrackedOp.h | 4 ++++ src/mds/Server.cc | 2 ++ 3 files changed, 10 insertions(+) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index bd605e54cc7..4ed2fa48bd6 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -341,6 +341,10 @@ bool OpTracker::check_ops_in_flight(std::vector &warning_vector, int *sl auto i = sdata->ops_in_flight_sharded.begin(); while (i != sdata->ops_in_flight_sharded.end() && i->get_initiated() < too_old) { + + if (!i->warn_interval_multiplier) + continue; + (*slow)++; // exponential backoff of warning intervals diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index 9435a1913c0..dea88df4c25 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -288,6 +288,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 6e9c61191d3..fd48bea1918 100644 --- a/src/mds/Server.cc +++ b/src/mds/Server.cc @@ -4000,6 +4000,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 -- 2.47.3