In order to support the invariant that all state machine
callbacks occur without holding locks, transitions that
don't always involve a librados call should queue their
callback.
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
m_image_ctx.async_requests_cond.Signal();
}
+void AsyncRequest::async_complete(int r) {
+ m_image_ctx.op_work_queue->queue(create_callback_context(), r);
+}
+
librados::AioCompletion *AsyncRequest::create_callback_completion() {
return librados::Rados::aio_create_completion(create_callback_context(),
NULL, rados_ctx_cb);
librados::AioCompletion *create_callback_completion();
Context *create_callback_context();
+ void async_complete(int r);
+
virtual bool safely_cancel(int r) {
return true;
}