]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
librbd: add ExclusiveLock::accept_request() overload
authorIlya Dryomov <idryomov@gmail.com>
Sat, 6 Dec 2025 08:32:08 +0000 (09:32 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Sun, 14 Dec 2025 21:03:56 +0000 (22:03 +0100)
Make ret_val out parameter required for the existing method and
introduce an overload taking just request_type to compensate.

Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
(cherry picked from commit 3327001c8f65aebf9eb08fe5d28c8e344f338d4d)

src/librbd/ExclusiveLock.cc
src/librbd/ExclusiveLock.h
src/librbd/Operations.cc

index bc148b1f5cd485a8e0aa93b5c1147986db90745f..fc2d2186ea828238f8c7a018eee8da891e5ed061 100644 (file)
@@ -41,6 +41,12 @@ ExclusiveLock<I>::ExclusiveLock(I &image_ctx)
   ML<I>::set_state_uninitialized();
 }
 
+template <typename I>
+bool ExclusiveLock<I>::accept_request(OperationRequestType request_type) const {
+  int ret_val; // ignored
+  return accept_request(request_type, &ret_val);
+}
+
 template <typename I>
 bool ExclusiveLock<I>::accept_request(OperationRequestType request_type,
                                       int *ret_val) const {
@@ -51,12 +57,10 @@ bool ExclusiveLock<I>::accept_request(OperationRequestType request_type,
      (m_request_blocked_count == 0 ||
       m_image_ctx.get_exclusive_lock_policy()->accept_blocked_request(
         request_type)));
-  if (ret_val != nullptr) {
-    *ret_val = accept_request ? 0 : m_request_blocked_ret_val;
-  }
+  *ret_val = accept_request ? 0 : m_request_blocked_ret_val;
 
-  ldout(m_image_ctx.cct, 20) << "=" << accept_request << " (request_type="
-                             << request_type << ")" << dendl;
+  ldout(m_image_ctx.cct, 20) << "=" << accept_request << " ret_val=" << *ret_val
+                             << " (request_type=" << request_type << ")" << dendl;
   return accept_request;
 }
 
index 9915262f9d97dd4c57b9d8fb75c34ed058d40320..34490eda0983bc8b2b09a25c1ae69bf4c432196a 100644 (file)
@@ -26,6 +26,7 @@ public:
 
   ExclusiveLock(ImageCtxT &image_ctx);
 
+  bool accept_request(exclusive_lock::OperationRequestType request_type) const;
   bool accept_request(exclusive_lock::OperationRequestType request_type,
                       int *ret_val) const;
   bool accept_ops() const;
index e3cf3df3d95e10de3f41d321cd2245a06a37a1bf..6cea202dbbc318e03763a29fa349bd08f2f1d220 100644 (file)
@@ -256,7 +256,7 @@ struct C_InvokeAsyncRequest : public Context {
     }
 
     if (image_ctx.exclusive_lock->is_lock_owner() &&
-        image_ctx.exclusive_lock->accept_request(request_type, nullptr)) {
+        image_ctx.exclusive_lock->accept_request(request_type)) {
       send_local_request();
       owner_lock.unlock_shared();
       return;
@@ -1849,7 +1849,7 @@ int Operations<I>::prepare_image_update(
     std::unique_lock owner_locker{m_image_ctx.owner_lock};
     if (m_image_ctx.exclusive_lock != nullptr &&
         (!m_image_ctx.exclusive_lock->is_lock_owner() ||
-         !m_image_ctx.exclusive_lock->accept_request(request_type, nullptr))) {
+         !m_image_ctx.exclusive_lock->accept_request(request_type))) {
 
       attempting_lock = true;
       m_image_ctx.exclusive_lock->block_requests(0);