virtual ~ImageRequestBase() {
}
+ virtual bool open_read_only() const {
+ return false;
+ }
+
virtual bool skip_get_info() const {
return false;
}
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) {
}
protected:
+ bool open_read_only() const override {
+ return true;
+ }
+
bool skip_get_info() const override {
return true;
}