From 8312dc61ceaa39dca675fda2cb7c88ec3c5ca9f7 Mon Sep 17 00:00:00 2001 From: David Zafman Date: Mon, 14 Mar 2016 13:28:39 -0700 Subject: [PATCH] common/TrackedOp: Move tracking_enabled check into register_inflight_op() Make tracking_enabled (and the lock private.)* Signed-off-by: David Zafman (Partial cherry picked from commit 4e8e6172e8f6cc2adc63a429c32f5edd03982f5e) * Backport: Exclude locking since tracking_enabled can't change after launch --- src/common/TrackedOp.cc | 5 +++-- src/common/TrackedOp.h | 8 +++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index 8692b368754dc..5b7b6e78ca1d9 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -129,10 +129,10 @@ bool OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked) return true; } -void OpTracker::register_inflight_op(xlist::item *i) +bool OpTracker::register_inflight_op(xlist::item *i) { if (!tracking_enabled) - return; + return false; uint64_t current_seq = seq.inc(); uint32_t shard_index = current_seq % num_optracker_shards; @@ -143,6 +143,7 @@ void OpTracker::register_inflight_op(xlist::item *i) sdata->ops_in_flight_sharded.push_back(i); sdata->ops_in_flight_sharded.back()->seq = current_seq; } + return true; } void OpTracker::unregister_inflight_op(TrackedOp *i) diff --git a/src/common/TrackedOp.h b/src/common/TrackedOp.h index b6445a0d48d7f..09b7674e26f06 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -74,9 +74,9 @@ class OpTracker { float complaint_time; int log_threshold; void _mark_event(TrackedOp *op, const string &evt, utime_t now); + bool tracking_enabled; public: - bool tracking_enabled; CephContext *cct; OpTracker(CephContext *cct_, bool tracking, uint32_t num_shards) : seq(0), num_optracker_shards(num_shards), @@ -100,7 +100,7 @@ public: } bool dump_ops_in_flight(Formatter *f, bool print_only_blocked=false); bool dump_historic_ops(Formatter *f); - void register_inflight_op(xlist::item *i); + bool register_inflight_op(xlist::item *i); void unregister_inflight_op(TrackedOp *i); void get_age_ms_histogram(pow2_hist_t *h); @@ -194,9 +194,7 @@ public: } void dump(utime_t now, Formatter *f) const; void tracking_start() { - RWLock::RLocker l(tracker->lock); - if (tracker->tracking_enabled) { - tracker->register_inflight_op(&xitem); + if (tracker->register_inflight_op(&xitem)) { events.push_back(make_pair(initiated_at, "initiated")); is_tracked.set(1); } -- 2.39.5