From: Jason Dillaman Date: Tue, 10 Nov 2015 13:20:13 +0000 (-0500) Subject: librbd: perf counters might not be initialized on error X-Git-Tag: v10.0.1~105^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F6523%2Fhead;p=ceph.git librbd: perf counters might not be initialized on error Fixes: #13740 Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/ImageCtx.cc b/src/librbd/ImageCtx.cc index 50c0b0295ed..68a03faffbd 100644 --- a/src/librbd/ImageCtx.cc +++ b/src/librbd/ImageCtx.cc @@ -108,7 +108,9 @@ public: } ImageCtx::~ImageCtx() { - perf_stop(); + if (perfcounter) { + perf_stop(); + } if (object_cacher) { delete object_cacher; object_cacher = NULL; diff --git a/src/librbd/internal.cc b/src/librbd/internal.cc index da0c9bcf0d0..56eb7c5567c 100644 --- a/src/librbd/internal.cc +++ b/src/librbd/internal.cc @@ -2884,7 +2884,8 @@ reprotect_and_return_err: if (ictx->object_cacher) { r = ictx->shutdown_cache(); // implicitly flushes } else { - r = flush(ictx); + RWLock::RLocker owner_locker(ictx->owner_lock); + r = _flush(ictx); } if (r < 0) { lderr(ictx->cct) << "error flushing IO: " << cpp_strerror(r)