]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/TrackedOp: Move tracking_enabled check into register_inflight_op() 8044/head
authorDavid Zafman <dzafman@redhat.com>
Mon, 14 Mar 2016 20:28:39 +0000 (13:28 -0700)
committerDavid Zafman <dzafman@redhat.com>
Tue, 15 Mar 2016 21:41:17 +0000 (14:41 -0700)
Make tracking_enabled and the lock private.

Signed-off-by: David Zafman <dzafman@redhat.com>
src/common/TrackedOp.cc
src/common/TrackedOp.h

index dc0478789dda0f856dacb89e940f02f34d77cda0..edea8476cb4aaa880b2bc48f18d9f5431c10f79b 100644 (file)
@@ -131,10 +131,11 @@ 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)
 {
-  // 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<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 4b7d7f977d79821a1de32e2479dd923e205453d4..9d0ff884a89ed195e8bb83d952c602b777d87556 100644 (file)
@@ -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<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);
@@ -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;
     }