]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
common/ceph_mutex: note whether mutex debug methods are usable
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 3 Oct 2023 20:45:12 +0000 (20:45 +0000)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 8 Nov 2023 18:43:48 +0000 (13:43 -0500)
So we can do checks like:

    ceph_assert(!ceph::mutex_debugging || !ceph_mutex_is_locked_by_me(lock));

Without this boolean, this check:

    ceph_assert(!ceph_mutex_is_locked_by_me(lock));

will fail for all crimson/release builds because the method always returns true.

Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
(cherry picked from commit a8bd314bbd78dbe73371e7a8beaaa1929577b76e)

src/common/ceph_mutex.h

index 81777c7dbe2a0962a51685c76853f7b00a049881..5b6d8de430f7a5a3caf4d5e2893196a244483f16 100644 (file)
@@ -54,6 +54,7 @@ namespace ceph {
     return {};
   }
 
+  static constexpr bool mutex_debugging = false;
   #define ceph_mutex_is_locked(m) true
   #define ceph_mutex_is_locked_by_me(m) true
 }
@@ -101,6 +102,8 @@ namespace ceph {
     return {std::forward<Args>(args)...};
   }
 
+  static constexpr bool mutex_debugging = true;
+
   // debug methods
   #define ceph_mutex_is_locked(m) ((m).is_locked())
   #define ceph_mutex_is_not_locked(m) (!(m).is_locked())
@@ -154,6 +157,8 @@ namespace ceph {
     return {};
   }
 
+  static constexpr bool mutex_debugging = false;
+
   // debug methods.  Note that these can blindly return true
   // because any code that does anything other than assert these
   // are true is broken.