From f27c00ce31f6809e352dcc8409be36ea683eec4a Mon Sep 17 00:00:00 2001 From: Ilya Dryomov Date: Tue, 17 Dec 2024 13:31:09 +0100 Subject: [PATCH] rbd: open images in read-only mode for "rbd mirror pool status --verbose" 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 (cherry picked from commit 650e21dd4930116d1cece4974a81ee46e248cae7) --- src/tools/rbd/action/MirrorPool.cc | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/tools/rbd/action/MirrorPool.cc b/src/tools/rbd/action/MirrorPool.cc index 51b58596c4ef..7d02ac0aee17 100644 --- a/src/tools/rbd/action/MirrorPool.cc +++ b/src/tools/rbd/action/MirrorPool.cc @@ -354,6 +354,10 @@ protected: virtual ~ImageRequestBase() { } + virtual bool open_read_only() const { + return false; + } + virtual bool skip_get_info() const { return false; } @@ -428,8 +432,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) { @@ -603,6 +612,10 @@ public: } protected: + bool open_read_only() const override { + return true; + } + bool skip_get_info() const override { return true; } -- 2.47.3