]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/TrackedOp: Missed locking when examining "events"
authorDavid Zafman <dzafman@redhat.com>
Sat, 5 Mar 2016 02:43:43 +0000 (18:43 -0800)
committerDavid Zafman <dzafman@redhat.com>
Wed, 23 Nov 2016 22:12:51 +0000 (14:12 -0800)
Another crash caused by a dump_ops_in_flight similar to #8885

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

Conflicts:
src/common/TrackedOp.h (trivial)

src/common/TrackedOp.h

index fb21517d58f0c35c88313847a8ad3c9736d2d92b..dc2452f28f41a45be0097e2cc1b8e8df5e4d65b4 100644 (file)
@@ -182,6 +182,7 @@ public:
   }
   // This function maybe needs some work; assumes last event is completion time
   double get_duration() const {
+    Mutex::Locker l(lock);
     return events.empty() ?
       0.0 :
       (events.rbegin()->first - get_initiated());
@@ -189,6 +190,7 @@ public:
 
   void mark_event(const string &event);
   virtual const char *state_string() const {
+    Mutex::Locker l(lock);
     return events.rbegin()->second.c_str();
   }
   void dump(utime_t now, Formatter *f) const;