From: Ilya Dryomov Date: Tue, 17 Dec 2024 12:31:09 +0000 (+0100) Subject: rbd: open images in read-only mode for "rbd mirror pool status --verbose" X-Git-Tag: testing/wip-pdonnell-testing-20250303.200617-debug~22^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=e640c3800c29ead528ec20de5ce70c6c0b933790;p=ceph-ci.git 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) --- diff --git a/src/tools/rbd/action/MirrorPool.cc b/src/tools/rbd/action/MirrorPool.cc index a7877870a04..1a16e58d3e9 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; }