]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/TrackedOp: Move tracking_enabled check into register_inflight_op() 12121/head
authorDavid Zafman <dzafman@redhat.com>
Mon, 14 Mar 2016 20:28:39 +0000 (13:28 -0700)
committerDavid Zafman <dzafman@redhat.com>
Wed, 23 Nov 2016 22:12:52 +0000 (14:12 -0800)
Make tracking_enabled (and the lock private.)*

Signed-off-by: David Zafman <dzafman@redhat.com>
(Partial cherry picked from commit 4e8e6172e8f6cc2adc63a429c32f5edd03982f5e)

* Backport: Exclude locking since tracking_enabled can't change after launch

src/common/TrackedOp.cc
src/common/TrackedOp.h

index 8692b368754dc829a44072f42a5fb26533cf2efb..5b7b6e78ca1d9691cdd9af2be4244ae3bb72af8f 100644 (file)
@@ -129,10 +129,10 @@ bool OpTracker::dump_ops_in_flight(Formatter *f, bool print_only_blocked)
   return true;
 }
 
-void OpTracker::register_inflight_op(xlist<TrackedOp*>::item *i)
+bool OpTracker::register_inflight_op(xlist<TrackedOp*>::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<TrackedOp*>::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)
index b6445a0d48d7f05ec1a2feea6834bc628d50ea39..09b7674e26f061f8e8bacaa89cdabe6f10069c95 100644 (file)
@@ -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<TrackedOp*>::item *i);
+  bool register_inflight_op(xlist<TrackedOp*>::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);
     }