object_cacher(NULL), writeback_handler(NULL), object_set(NULL),
readahead(),
total_bytes_read(0), copyup_finisher(NULL),
- object_map(*this), aio_work_queue(NULL)
+ object_map(*this), aio_work_queue(NULL), op_work_queue(NULL)
{
md_ctx.dup(p);
data_ctx.dup(p);
aio_work_queue = new ContextWQ("librbd::aio_work_queue",
cct->_conf->rbd_op_thread_timeout,
thread_pool_singleton);
+ op_work_queue = new ContextWQ("librbd::op_work_queue",
+ cct->_conf->rbd_op_thread_timeout,
+ thread_pool_singleton);
}
ImageCtx::~ImageCtx() {
}
delete[] format_string;
+ delete op_work_queue;
delete aio_work_queue;
}
xlist<AsyncResizeRequest*> async_resize_reqs;
ContextWQ *aio_work_queue;
+ ContextWQ *op_work_queue;
/**
* Either image_name or image_id must be set.
flush(ictx);
}
+ ictx->op_work_queue->drain();
+
if (ictx->copyup_finisher != NULL) {
ictx->copyup_finisher->wait_for_empty();
ictx->copyup_finisher->stop();