From 4e8e6172e8f6cc2adc63a429c32f5edd03982f5e 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 --- src/common/TrackedOp.cc | 8 +++++--- src/common/TrackedOp.h | 14 ++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/common/TrackedOp.cc b/src/common/TrackedOp.cc index dc0478789dd..edea8476cb4 100644 --- a/src/common/TrackedOp.cc +++ b/src/common/TrackedOp.cc @@ -131,10 +131,11 @@ 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) { - // caller checks; - assert(tracking_enabled); + RWLock::RLocker l(lock); + if (!tracking_enabled) + return false; uint64_t current_seq = seq.inc(); uint32_t shard_index = current_seq % num_optracker_shards; @@ -145,6 +146,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 4b7d7f977d7..9d0ff884a89 100644 --- a/src/common/TrackedOp.h +++ b/src/common/TrackedOp.h @@ -75,16 +75,16 @@ class OpTracker { float complaint_time; int log_threshold; void _mark_event(TrackedOp *op, const string &evt, utime_t now); + bool tracking_enabled; + RWLock lock; public: - bool tracking_enabled; CephContext *cct; - RWLock lock; OpTracker(CephContext *cct_, bool tracking, uint32_t num_shards) : seq(0), num_optracker_shards(num_shards), complaint_time(0), log_threshold(0), - tracking_enabled(tracking), cct(cct_), - lock("OpTracker::lock") { + tracking_enabled(tracking), + lock("OpTracker::lock"), cct(cct_) { for (uint32_t i = 0; i < num_optracker_shards; i++) { char lock_name[32] = {0}; @@ -107,7 +107,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); @@ -203,9 +203,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 = true; } -- 2.47.3