#include "librbd/io/QueueImageDispatch.h"
#include "librbd/io/QosImageDispatch.h"
#include "librbd/io/RefreshImageDispatch.h"
+#include "librbd/io/WriteBlockImageDispatch.h"
#include <boost/variant.hpp>
#define dout_subsys ceph_subsys_rbd
auto image_dispatch = new ImageDispatch(image_ctx);
this->register_dispatch(image_dispatch);
- m_queue_image_dispatch = new QueueImageDispatch(image_ctx);
- this->register_dispatch(m_queue_image_dispatch);
+ auto queue_image_dispatch = new QueueImageDispatch(image_ctx);
+ this->register_dispatch(queue_image_dispatch);
m_qos_image_dispatch = new QosImageDispatch<I>(image_ctx);
this->register_dispatch(m_qos_image_dispatch);
auto refresh_image_dispatch = new RefreshImageDispatch(image_ctx);
this->register_dispatch(refresh_image_dispatch);
+
+ m_write_block_dispatch = new WriteBlockImageDispatch<I>(image_ctx);
+ this->register_dispatch(m_write_block_dispatch);
}
template <typename I>
template <typename I>
bool ImageDispatcher<I>::writes_blocked() const {
- return m_queue_image_dispatch->writes_blocked();
+ return m_write_block_dispatch->writes_blocked();
}
template <typename I>
int ImageDispatcher<I>::block_writes() {
- return m_queue_image_dispatch->block_writes();
+ return m_write_block_dispatch->block_writes();
}
template <typename I>
void ImageDispatcher<I>::block_writes(Context *on_blocked) {
- m_queue_image_dispatch->block_writes(on_blocked);
+ m_write_block_dispatch->block_writes(on_blocked);
}
template <typename I>
void ImageDispatcher<I>::unblock_writes() {
- m_queue_image_dispatch->unblock_writes();
+ m_write_block_dispatch->unblock_writes();
}
template <typename I>
void ImageDispatcher<I>::wait_on_writes_unblocked(Context *on_unblocked) {
- m_queue_image_dispatch->wait_on_writes_unblocked(on_unblocked);
+ m_write_block_dispatch->wait_on_writes_unblocked(on_unblocked);
}
template <typename I>
namespace io {
-template <typename> struct QueueImageDispatch;
template <typename> struct QosImageDispatch;
+template <typename> struct WriteBlockImageDispatch;
template <typename ImageCtxT = ImageCtx>
class ImageDispatcher : public Dispatcher<ImageCtxT, ImageDispatcherInterface> {
std::atomic<uint64_t> m_next_tid{0};
- QueueImageDispatch<ImageCtxT>* m_queue_image_dispatch = nullptr;
QosImageDispatch<ImageCtxT>* m_qos_image_dispatch = nullptr;
+ WriteBlockImageDispatch<ImageCtxT>* m_write_block_dispatch = nullptr;
};