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 <idryomov@gmail.com>
This commit is contained in:
Ilya Dryomov 2024-12-17 13:31:09 +01:00
parent 862ed6e9cd
commit 650e21dd49

View 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;
}