]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: open images in read-only mode for "rbd mirror pool status --verbose" 61150/head
authorIlya Dryomov <idryomov@gmail.com>
Tue, 17 Dec 2024 12:31:09 +0000 (13:31 +0100)
committerIlya Dryomov <idryomov@gmail.com>
Thu, 19 Dec 2024 17:43:19 +0000 (18:43 +0100)
This is cleaner and makes the command run a bit faster because watches
won't be established.

Fixes: https://tracker.ceph.com/issues/69319
Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
src/tools/rbd/action/MirrorPool.cc

index 58e2d4dc329af222fb8eb73ededae739ae836864..6a546c3f73a34a6c64bbeb421035b63666b7338a 100644 (file)
@@ -355,6 +355,10 @@ protected:
   virtual ~ImageRequestBase() {
   }
 
+  virtual bool open_read_only() const {
+    return false;
+  }
+
   virtual bool skip_get_info() const {
     return false;
   }
@@ -429,8 +433,13 @@ private:
     librbd::RBD rbd;
     auto aio_completion = utils::create_aio_completion<
       ImageRequestBase, &ImageRequestBase::handle_open_image>(this);
-    rbd.aio_open(m_io_ctx, m_image, m_image_name.c_str(), nullptr,
-                 aio_completion);
+    if (open_read_only()) {
+      rbd.aio_open_read_only(m_io_ctx, m_image, m_image_name.c_str(), nullptr,
+                             aio_completion);
+    } else {
+      rbd.aio_open(m_io_ctx, m_image, m_image_name.c_str(), nullptr,
+                   aio_completion);
+    }
   }
 
   void handle_open_image(int r) {
@@ -604,6 +613,10 @@ public:
   }
 
 protected:
+  bool open_read_only() const override {
+    return true;
+  }
+
   bool skip_get_info() const override {
     return true;
   }