]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.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>
Tue, 9 Dec 2025 21:23:40 +0000 (22:23 +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>
src/librbd/ExclusiveLock.cc
src/librbd/ExclusiveLock.h
src/librbd/Operations.cc

index 888d4800780da3cc178e264422cea94b64e272f8..d2d99dec9a944572407e656bee21b704cc8d6a29 100644 (file)
@@ -43,6 +43,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 {
@@ -53,12 +59,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 aaf6ed3397f83b5804e494879c1823a0cd5d7e99..2616e9c18a543405f2a375a763e5d231f12fa414 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 f233c642287264eaddd7b7a764d2e1d772842554..e6eb96172bf853b18d17278dfa3f5a2cf4bfbd3d 100644 (file)
@@ -257,7 +257,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;
@@ -1850,7 +1850,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);