template <typename T>
librados::AioCompletion *AsyncRequest<T>::create_callback_completion() {
- return util::create_rados_safe_callback(this);
+ return util::create_rados_callback(this);
}
template <typename T>
void send() {
C_OrderedThrottle *ctx = m_diff_context.throttle.start_op(this);
librados::AioCompletion *rados_completion =
- util::create_rados_safe_callback(ctx);
+ util::create_rados_callback(ctx);
librados::ObjectReadOperation op;
op.list_snaps(&m_snap_set, &m_snap_ret);
using namespace watch_notify;
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
using librbd::watcher::HandlePayloadVisitor;
using librbd::watcher::C_NotifyAck;
int flags = m_ictx->get_read_flags(snapid);
librados::AioCompletion *rados_completion =
- util::create_rados_ack_callback(req);
+ util::create_rados_callback(req);
int r = m_ictx->data_ctx.aio_operate(oid.name, rados_completion, &op,
flags, NULL);
rados_completion->release();
bufferlist bl;
::encode(NotifyMessage{ModeUpdatedPayload{mirror_mode}}, bl);
- librados::AioCompletion *comp = util::create_rados_ack_callback(on_finish);
+ librados::AioCompletion *comp = util::create_rados_callback(on_finish);
int r = io_ctx.aio_notify(RBD_MIRRORING, comp, bl, NOTIFY_TIMEOUT_MS,
nullptr);
assert(r == 0);
::encode(NotifyMessage{ImageUpdatedPayload{
mirror_image_state, image_id, global_image_id}}, bl);
- librados::AioCompletion *comp = util::create_rados_ack_callback(on_finish);
+ librados::AioCompletion *comp = util::create_rados_callback(on_finish);
int r = io_ctx.aio_notify(RBD_MIRRORING, comp, bl, NOTIFY_TIMEOUT_MS,
nullptr);
assert(r == 0);
cls_client::object_map_save(&op, m_object_map);
std::string oid(object_map_name(m_image_ctx.id, m_snap_id));
- librados::AioCompletion *comp = util::create_rados_safe_callback(on_finish);
+ librados::AioCompletion *comp = util::create_rados_callback(on_finish);
int r = m_image_ctx.md_ctx.aio_operate(oid, comp, &op);
assert(r == 0);
return name + " (" + stringify(address) + ")";
}
-librados::AioCompletion *create_rados_ack_callback(Context *on_finish) {
- return create_rados_ack_callback<Context, &Context::complete>(on_finish);
+librados::AioCompletion *create_rados_callback(Context *on_finish) {
+ return create_rados_callback<Context, &Context::complete>(on_finish);
}
std::string generate_image_id(librados::IoCtx &ioctx) {
const std::string old_header_name(const std::string &image_name);
std::string unique_lock_name(const std::string &name, void *address);
-librados::AioCompletion *create_rados_ack_callback(Context *on_finish);
+librados::AioCompletion *create_rados_callback(Context *on_finish);
template <typename T>
-librados::AioCompletion *create_rados_ack_callback(T *obj) {
+librados::AioCompletion *create_rados_callback(T *obj) {
return librados::Rados::aio_create_completion(
obj, &detail::rados_callback<T>, nullptr);
}
template <typename T, void(T::*MF)(int)>
-librados::AioCompletion *create_rados_ack_callback(T *obj) {
+librados::AioCompletion *create_rados_callback(T *obj) {
return librados::Rados::aio_create_completion(
obj, &detail::rados_callback<T, MF>, nullptr);
}
template <typename T, Context*(T::*MF)(int*), bool destroy=true>
-librados::AioCompletion *create_rados_ack_callback(T *obj) {
+librados::AioCompletion *create_rados_callback(T *obj) {
return librados::Rados::aio_create_completion(
obj, &detail::rados_state_callback<T, MF, destroy>, nullptr);
}
-template <typename T>
-librados::AioCompletion *create_rados_safe_callback(T *obj) {
- return librados::Rados::aio_create_completion(
- obj, nullptr, &detail::rados_callback<T>);
-}
-
-template <typename T, void(T::*MF)(int)>
-librados::AioCompletion *create_rados_safe_callback(T *obj) {
- return librados::Rados::aio_create_completion(
- obj, nullptr, &detail::rados_callback<T, MF>);
-}
-
-template <typename T, Context*(T::*MF)(int*), bool destroy=true>
-librados::AioCompletion *create_rados_safe_callback(T *obj) {
- return librados::Rados::aio_create_completion(
- obj, nullptr, &detail::rados_state_callback<T, MF, destroy>);
-}
-
template <typename T, void(T::*MF)(int) = &T::complete>
Context *create_context_callback(T *obj) {
return new detail::C_CallbackAdapter<T, MF>(obj);
using namespace watcher;
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
using std::string;
namespace {
if (!flushing) {
flushing = true;
- librados::AioCompletion *aio_comp = create_rados_safe_callback(this);
+ librados::AioCompletion *aio_comp = create_rados_callback(this);
r = rados.aio_watch_flush(aio_comp);
assert(r == 0);
aio_comp->release();
assert(m_watch_state == WATCH_STATE_UNREGISTERED);
m_watch_state = WATCH_STATE_REGISTERING;
- librados::AioCompletion *aio_comp = create_rados_safe_callback(
+ librados::AioCompletion *aio_comp = create_rados_callback(
new C_RegisterWatch(this, on_finish));
int r = m_ioctx.aio_watch(m_oid, aio_comp, &m_watch_handle, &m_watch_ctx);
assert(r == 0);
m_watch_state == WATCH_STATE_ERROR) {
m_watch_state = WATCH_STATE_UNREGISTERED;
- librados::AioCompletion *aio_comp = create_rados_safe_callback(
+ librados::AioCompletion *aio_comp = create_rados_callback(
new C_UnwatchAndFlush(m_ioctx, on_finish));
int r = m_ioctx.aio_unwatch(m_watch_handle, aio_comp);
assert(r == 0);
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_ack_callback;
-using util::create_rados_safe_callback;
-
+using util::create_rados_callback;
template <typename I>
PostAcquireRequest<I>* PostAcquireRequest<I>::create(I &image_ctx,
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_ack_callback;
-using util::create_rados_safe_callback;
-
+using util::create_rados_callback;
template <typename I>
PreAcquireRequest<I>* PreAcquireRequest<I>::create(I &image_ctx,
namespace librbd {
namespace image {
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
using util::create_context_callback;
namespace {
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_validate_pool>(this);
+ create_rados_callback<klass, &klass::handle_validate_pool>(this);
librados::ObjectReadOperation op;
op.stat(NULL, NULL, NULL);
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_create_id_object>(this);
+ create_rados_callback<klass, &klass::handle_create_id_object>(this);
int r = m_ioctx.aio_operate(m_id_obj, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_add_image_to_directory>(this);
+ create_rados_callback<klass, &klass::handle_add_image_to_directory>(this);
int r = m_ioctx.aio_operate(RBD_DIRECTORY, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_negotiate_features>(this);
+ create_rados_callback<klass, &klass::handle_negotiate_features>(this);
int r = m_ioctx.aio_operate(RBD_DIRECTORY, comp, &op, &m_outbl);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_create_image>(this);
+ create_rados_callback<klass, &klass::handle_create_image>(this);
int r = m_ioctx.aio_operate(m_header_obj, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_set_stripe_unit_count>(this);
+ create_rados_callback<klass, &klass::handle_set_stripe_unit_count>(this);
int r = m_ioctx.aio_operate(m_header_obj, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_object_map_resize>(this);
+ create_rados_callback<klass, &klass::handle_object_map_resize>(this);
int r = m_ioctx.aio_operate(m_objmap_name, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_fetch_mirror_mode>(this);
+ create_rados_callback<klass, &klass::handle_fetch_mirror_mode>(this);
m_outbl.clear();
int r = m_ioctx.aio_operate(RBD_MIRRORING, comp, &op, &m_outbl);
assert(r == 0);
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_object_map>(this);
+ create_rados_callback<klass, &klass::handle_remove_object_map>(this);
int r = m_ioctx.aio_remove(m_objmap_name, comp);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_header_object>(this);
+ create_rados_callback<klass, &klass::handle_remove_header_object>(this);
int r = m_ioctx.aio_remove(m_header_obj, comp);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_from_dir>(this);
+ create_rados_callback<klass, &klass::handle_remove_from_dir>(this);
int r = m_ioctx.aio_operate(RBD_DIRECTORY, comp, &op);
assert(r == 0);
comp->release();
using klass = CreateRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_id_object>(this);
+ create_rados_callback<klass, &klass::handle_remove_id_object>(this);
int r = m_ioctx.aio_remove(m_id_obj, comp);
assert(r == 0);
comp->release();
}
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
OpenRequest<I>::OpenRequest(I *image_ctx, bool skip_open_parent,
using klass = OpenRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_v1_detect_header>(this);
+ create_rados_callback<klass, &klass::handle_v1_detect_header>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(util::old_header_name(m_image_ctx->name),
comp, &op, &m_out_bl);
using klass = OpenRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_v2_detect_header>(this);
+ create_rados_callback<klass, &klass::handle_v2_detect_header>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(util::id_obj_name(m_image_ctx->name),
comp, &op, &m_out_bl);
using klass = OpenRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_v2_get_id>(this);
+ create_rados_callback<klass, &klass::handle_v2_get_id>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(util::id_obj_name(m_image_ctx->name),
comp, &op, &m_out_bl);
cls_client::dir_get_name_start(&op, m_image_ctx->id);
using klass = OpenRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_name>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(RBD_DIRECTORY, comp, &op, &m_out_bl);
cls_client::get_immutable_metadata_start(&op);
using klass = OpenRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_immutable_metadata>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(m_image_ctx->header_oid, comp, &op,
cls_client::get_stripe_unit_count_start(&op);
using klass = OpenRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_stripe_unit_count>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(m_image_ctx->header_oid, comp, &op,
cls_client::get_data_pool_start(&op);
using klass = OpenRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_data_pool>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(m_image_ctx->header_oid, comp, &op,
using klass = OpenRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_v2_apply_metadata>(this);
+ create_rados_callback<klass, &klass::handle_v2_apply_metadata>(this);
m_out_bl.clear();
m_image_ctx->md_ctx.aio_operate(m_image_ctx->header_oid, comp, &op,
&m_out_bl);
namespace librbd {
namespace image {
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
using util::create_async_context_callback;
using util::create_context_callback;
op.read(0, 0, nullptr, nullptr);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v1_read_header>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::old_snapshot_list_start(&op);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v1_get_snapshots>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
rados::cls::lock::get_lock_info_start(&op, RBD_LOCK_NAME);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v1_get_locks>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::get_mutable_metadata_start(&op, read_only);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_mutable_metadata>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::get_flags_start(&op, m_snapc.snaps);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_flags>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::image_get_group_start(&op);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_group>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::snapshot_list_start(&op, m_snapc.snaps);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_snapshots>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::snapshot_timestamp_list_start(&op, m_snapc.snaps);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_snap_timestamps>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
cls_client::snapshot_namespace_list_start(&op, m_snapc.snaps);
using klass = RefreshRequest<I>;
- librados::AioCompletion *comp = create_rados_ack_callback<
+ librados::AioCompletion *comp = create_rados_callback<
klass, &klass::handle_v2_get_snap_namespaces>(this);
m_out_bl.clear();
int r = m_image_ctx.md_ctx.aio_operate(m_image_ctx.header_oid, comp, &op,
using librados::IoCtx;
using util::create_context_callback;
using util::create_async_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template<typename I>
RemoveRequest<I>::RemoveRequest(IoCtx &ioctx, const std::string &image_name,
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_check_image_watchers>(this);
+ create_rados_callback<klass, &klass::handle_check_image_watchers>(this);
int r = m_image_ctx->md_ctx.aio_operate(m_header_oid, rados_completion,
&op, &m_out_bl);
librbd::cls_client::image_get_group_start(&op);
using klass = RemoveRequest<I>;
- librados::AioCompletion *rados_completion = create_rados_ack_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
klass, &klass::handle_check_image_consistency_group>(this);
m_out_bl.clear();
int r = m_image_ctx->md_ctx.aio_operate(m_header_oid, rados_completion, &op,
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_remove_child>(this);
+ create_rados_callback<klass, &klass::handle_remove_child>(this);
int r = m_image_ctx->md_ctx.aio_operate(RBD_CHILDREN, rados_completion, &op);
assert(r == 0);
rados_completion->release();
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_remove_header>(this);
+ create_rados_callback<klass, &klass::handle_remove_header>(this);
int r = m_ioctx.aio_remove(m_header_oid, rados_completion);
assert(r == 0);
rados_completion->release();
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_remove_header_v2>(this);
+ create_rados_callback<klass, &klass::handle_remove_header_v2>(this);
int r = m_ioctx.aio_remove(m_header_oid, rados_completion);
assert(r == 0);
rados_completion->release();
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_object_map_remove>(this);
+ create_rados_callback<klass, &klass::handle_object_map_remove>(this);
int r = ObjectMap<>::aio_remove(m_ioctx,
m_image_id,
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_mirror_image_remove>(this);
+ create_rados_callback<klass, &klass::handle_mirror_image_remove>(this);
int r = m_ioctx.aio_operate(RBD_MIRRORING, rados_completion, &op);
assert(r == 0);
rados_completion->release();
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_dir_get_image_id>(this);
+ create_rados_callback<klass, &klass::handle_dir_get_image_id>(this);
m_out_bl.clear();
int r = m_ioctx.aio_operate(RBD_DIRECTORY, rados_completion, &op, &m_out_bl);
assert(r == 0);
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_dir_get_image_name>(this);
+ create_rados_callback<klass, &klass::handle_dir_get_image_name>(this);
m_out_bl.clear();
int r = m_ioctx.aio_operate(RBD_DIRECTORY, rados_completion, &op, &m_out_bl);
assert(r == 0);
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_remove_id_object>(this);
+ create_rados_callback<klass, &klass::handle_remove_id_object>(this);
int r = m_ioctx.aio_remove(util::id_obj_name(m_image_name), rados_completion);
assert(r == 0);
rados_completion->release();
using klass = RemoveRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_dir_remove_image>(this);
+ create_rados_callback<klass, &klass::handle_dir_remove_image>(this);
int r = m_ioctx.aio_operate(RBD_DIRECTORY, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace image {
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
SetFlagsRequest<I>::SetFlagsRequest(I *image_ctx, uint64_t flags,
cls_client::set_flags(&op, snap_id, m_flags, m_mask);
librados::AioCompletion *comp =
- create_rados_ack_callback(gather_ctx->new_sub());
+ create_rados_callback(gather_ctx->new_sub());
int r = m_image_ctx->md_ctx.aio_operate(m_image_ctx->header_oid, comp, &op);
assert(r == 0);
comp->release();
ldout(m_ictx->cct, 20) << __func__ << " " << this << " copyup with "
<< "empty snapshot context" << dendl;
- librados::AioCompletion *comp = util::create_rados_safe_callback(this);
+ librados::AioCompletion *comp = util::create_rados_callback(this);
librados::Rados rados(m_ictx->data_ctx);
r = rados.ioctx_create2(m_ictx->data_ctx.get_id(), m_data_ctx);
assert(write_op.size() != 0);
snaps.insert(snaps.end(), snapc.snaps.begin(), snapc.snaps.end());
- librados::AioCompletion *comp = util::create_rados_safe_callback(this);
+ librados::AioCompletion *comp = util::create_rados_callback(this);
r = m_ictx->data_ctx.aio_operate(m_oid, comp, &write_op);
assert(r == 0);
comp->release();
op.set_op_flags2(m_op_flags);
librados::AioCompletion *rados_completion =
- util::create_rados_ack_callback(this);
+ util::create_rados_callback(this);
int r = image_ctx->data_ctx.aio_operate(this->m_oid, rados_completion, &op,
flags, nullptr);
assert(r == 0);
assert(m_write.size() != 0);
librados::AioCompletion *rados_completion =
- util::create_rados_safe_callback(this);
+ util::create_rados_callback(this);
int r = m_ictx->data_ctx.aio_operate(m_oid, rados_completion, &m_write,
m_snap_seq, m_snaps);
assert(r == 0);
using librbd::util::detail::C_AsyncCallback;
using librbd::util::create_context_callback;
-using librbd::util::create_rados_safe_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
namespace managed_lock {
using klass = AcquireRequest;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_lock>(this);
+ create_rados_callback<klass, &klass::handle_lock>(this);
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace managed_lock {
using util::create_context_callback;
-using util::create_rados_ack_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
namespace {
using klass = BreakRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_get_watchers>(this);
+ create_rados_callback<klass, &klass::handle_get_watchers>(this);
m_out_bl.clear();
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op, &m_out_bl);
assert(r == 0);
using klass = BreakRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_break_lock>(this);
+ create_rados_callback<klass, &klass::handle_break_lock>(this);
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace librbd {
namespace managed_lock {
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
GetLockerRequest<I>::GetLockerRequest(librados::IoCtx& ioctx,
using klass = GetLockerRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_get_lockers>(this);
+ create_rados_callback<klass, &klass::handle_get_lockers>(this);
m_out_bl.clear();
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op, &m_out_bl);
assert(r == 0);
namespace librbd {
namespace managed_lock {
-using librbd::util::create_rados_safe_callback;
+using librbd::util::create_rados_callback;
template <typename I>
ReacquireRequest<I>::ReacquireRequest(librados::IoCtx& ioctx,
m_old_cookie, util::get_watcher_lock_tag(),
m_new_cookie);
- librados::AioCompletion *rados_completion = create_rados_safe_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
ReacquireRequest, &ReacquireRequest::handle_set_cookie>(this);
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op);
assert(r == 0);
using util::detail::C_AsyncCallback;
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
template <typename I>
ReleaseRequest<I>* ReleaseRequest<I>::create(librados::IoCtx& ioctx,
using klass = ReleaseRequest;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_unlock>(this);
+ create_rados_callback<klass, &klass::handle_unlock>(this);
int r = m_ioctx.aio_operate(m_oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace librbd {
namespace mirror {
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
DisableRequest<I>::DisableRequest(I *image_ctx, bool force, bool remove,
using klass = DisableRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_get_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_get_mirror_image>(this);
m_out_bl.clear();
int r = m_image_ctx->md_ctx.aio_operate(RBD_MIRRORING, comp, &op, &m_out_bl);
assert(r == 0);
using klass = DisableRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_set_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_set_mirror_image>(this);
m_out_bl.clear();
int r = m_image_ctx->md_ctx.aio_operate(RBD_MIRRORING, comp, &op);
assert(r == 0);
librados::ObjectWriteOperation op;
cls::journal::client::client_unregister(&op, client_id);
std::string header_oid = ::journal::Journaler::header_oid(m_image_ctx->id);
- librados::AioCompletion *comp = create_rados_ack_callback(ctx);
+ librados::AioCompletion *comp = create_rados_callback(ctx);
int r = m_image_ctx->md_ctx.aio_operate(header_oid, comp, &op);
assert(r == 0);
using klass = DisableRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_remove_mirror_image>(this);
m_out_bl.clear();
int r = m_image_ctx->md_ctx.aio_operate(RBD_MIRRORING, comp, &op);
assert(r == 0);
namespace mirror {
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
EnableRequest<I>::EnableRequest(librados::IoCtx &io_ctx,
using klass = EnableRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_get_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_get_mirror_image>(this);
m_out_bl.clear();
int r = m_io_ctx.aio_operate(RBD_MIRRORING, comp, &op, &m_out_bl);
assert(r == 0);
using klass = EnableRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_set_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_set_mirror_image>(this);
m_out_bl.clear();
int r = m_io_ctx.aio_operate(RBD_MIRRORING, comp, &op);
assert(r == 0);
namespace object_map {
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
CreateRequest<I>::CreateRequest(I *image_ctx, Context *on_finish)
OBJECT_NONEXISTENT);
std::string oid(ObjectMap<>::object_map_name(m_image_ctx->id, snap_id));
- librados::AioCompletion *comp = create_rados_ack_callback(gather_ctx->new_sub());
+ librados::AioCompletion *comp = create_rados_callback(gather_ctx->new_sub());
int r = m_image_ctx->md_ctx.aio_operate(oid, comp, &op);
assert(r == 0);
comp->release();
namespace librbd {
namespace object_map {
-using util::create_rados_ack_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
template <typename I>
LockRequest<I>::LockRequest(I &image_ctx, Context *on_finish)
using klass = LockRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_lock>(this);
+ create_rados_callback<klass, &klass::handle_lock>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
using klass = LockRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_get_lock_info>(this);
+ create_rados_callback<klass, &klass::handle_get_lock_info>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op, &m_out_bl);
assert(r == 0);
rados_completion->release();
using klass = LockRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_break_locks>(this);
+ create_rados_callback<klass, &klass::handle_break_locks>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace librbd {
using util::create_context_callback;
-using util::create_rados_ack_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
namespace object_map {
using klass = RefreshRequest<I>;
m_out_bl.clear();
librados::AioCompletion *rados_completion =
- create_rados_ack_callback<klass, &klass::handle_load>(this);
+ create_rados_callback<klass, &klass::handle_load>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op, &m_out_bl);
assert(r == 0);
rados_completion->release();
using klass = RefreshRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_resize>(this);
+ create_rados_callback<klass, &klass::handle_resize>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
namespace librbd {
namespace object_map {
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
RemoveRequest<I>::RemoveRequest(I *image_ctx, Context *on_finish)
std::string oid(ObjectMap<>::object_map_name(m_image_ctx->id, snap_id));
using klass = RemoveRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_remove_object_map>(this);
+ create_rados_callback<klass, &klass::handle_remove_object_map>(this);
int r = m_image_ctx->md_ctx.aio_remove(oid, comp);
assert(r == 0);
namespace librbd {
namespace object_map {
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
template <typename I>
UnlockRequest<I>::UnlockRequest(I &image_ctx, Context *on_finish)
using klass = UnlockRequest<I>;
librados::AioCompletion *rados_completion =
- create_rados_safe_callback<klass, &klass::handle_unlock>(this);
+ create_rados_callback<klass, &klass::handle_unlock>(this);
int r = m_image_ctx.md_ctx.aio_operate(oid, rados_completion, &op);
assert(r == 0);
rados_completion->release();
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
DisableFeaturesRequest<I>::DisableFeaturesRequest(I &image_ctx,
using klass = DisableFeaturesRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_get_mirror_mode>(this);
+ create_rados_callback<klass, &klass::handle_get_mirror_mode>(this);
m_out_bl.clear();
int r = image_ctx.md_ctx.aio_operate(RBD_MIRRORING, comp, &op, &m_out_bl);
assert(r == 0);
using klass = DisableFeaturesRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_get_mirror_image>(this);
+ create_rados_callback<klass, &klass::handle_get_mirror_image>(this);
m_out_bl.clear();
int r = image_ctx.md_ctx.aio_operate(RBD_MIRRORING, comp, &op, &m_out_bl);
assert(r == 0);
using klass = DisableFeaturesRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_set_features>(this);
+ create_rados_callback<klass, &klass::handle_set_features>(this);
int r = image_ctx.md_ctx.aio_operate(image_ctx.header_oid, comp, &op);
assert(r == 0);
comp->release();
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_ack_callback;
+using util::create_rados_callback;
template <typename I>
EnableFeaturesRequest<I>::EnableFeaturesRequest(I &image_ctx,
using klass = EnableFeaturesRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_get_mirror_mode>(this);
+ create_rados_callback<klass, &klass::handle_get_mirror_mode>(this);
m_out_bl.clear();
int r = image_ctx.md_ctx.aio_operate(RBD_MIRRORING, comp, &op, &m_out_bl);
assert(r == 0);
using klass = EnableFeaturesRequest<I>;
librados::AioCompletion *comp =
- create_rados_ack_callback<klass, &klass::handle_set_features>(this);
+ create_rados_callback<klass, &klass::handle_set_features>(this);
int r = image_ctx.md_ctx.aio_operate(image_ctx.header_oid, comp, &op);
assert(r == 0);
comp->release();
librados::ObjectReadOperation op;
op.list_snaps(&m_snap_set, &m_snap_list_ret);
- librados::AioCompletion *comp = util::create_rados_safe_callback(this);
+ librados::AioCompletion *comp = util::create_rados_callback(this);
int r = m_io_ctx.aio_operate(m_oid, comp, &op, NULL);
assert(r == 0);
comp->release();
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
template <typename I>
ResizeRequest<I>::ResizeRequest(I &image_ctx, Context *on_finish,
cls_client::set_size(&op, m_new_size);
}
- librados::AioCompletion *rados_completion = create_rados_safe_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
ResizeRequest<I>, &ResizeRequest<I>::handle_update_header>(this);
int r = image_ctx.md_ctx.aio_operate(image_ctx.header_oid,
rados_completion, &op);
using util::create_async_context_callback;
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
template <typename I>
SnapshotCreateRequest<I>::SnapshotCreateRequest(I &image_ctx,
CephContext *cct = image_ctx.cct;
ldout(cct, 5) << this << " " << __func__ << dendl;
- librados::AioCompletion *rados_completion = create_rados_safe_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_allocate_snap_id>(this);
image_ctx.md_ctx.aio_selfmanaged_snap_create(&m_snap_id, rados_completion);
cls_client::snapshot_add(&op, m_snap_id, m_snap_name, m_snap_namespace);
}
- librados::AioCompletion *rados_completion = create_rados_safe_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_create_snap>(this);
int r = image_ctx.md_ctx.aio_operate(image_ctx.header_oid,
assert(m_snap_id != CEPH_NOSNAP);
- librados::AioCompletion *rados_completion = create_rados_safe_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_release_snap_id>(this);
image_ctx.md_ctx.aio_selfmanaged_snap_remove(m_snap_id, rados_completion);
namespace operation {
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
namespace {
op.selfmanaged_snap_rollback(m_snap_id);
librados::AioCompletion *rados_completion =
- util::create_rados_safe_callback(this);
+ util::create_rados_callback(this);
image_ctx.data_ctx.aio_operate(oid, rados_completion, &op);
rados_completion->release();
return 0;
cls_client::get_children_start(&op, m_pspec);
librados::AioCompletion *rados_completion =
- util::create_rados_ack_callback(this);
+ util::create_rados_callback(this);
r = m_pool_ioctx.aio_operate(RBD_CHILDREN, rados_completion, &op,
&m_children_bl);
assert(r == 0);
ldout(image_ctx.cct, 10) << "removing " << oid << dendl;
librados::AioCompletion *rados_completion =
- util::create_rados_safe_callback(this);
+ util::create_rados_callback(this);
int r = image_ctx.data_ctx.aio_remove(oid, rados_completion);
assert(r == 0);
rados_completion->release();
}
C_AioNotify *ctx = new C_AioNotify(this, on_finish);
- librados::AioCompletion *comp = util::create_rados_ack_callback(ctx);
+ librados::AioCompletion *comp = util::create_rados_callback(ctx);
int r = m_ioctx.aio_notify(m_oid, comp, bl, NOTIFY_TIMEOUT, out_bl);
assert(r == 0);
comp->release();
namespace librbd {
using util::create_context_callback;
-using util::create_rados_safe_callback;
+using util::create_rados_callback;
namespace watcher {
CephContext *cct = reinterpret_cast<CephContext *>(m_ioctx.cct());
ldout(cct, 10) << dendl;
- librados::AioCompletion *aio_comp = create_rados_safe_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
RewatchRequest, &RewatchRequest::handle_unwatch>(this);
int r = m_ioctx.aio_unwatch(*m_watch_handle, aio_comp);
assert(r == 0);
CephContext *cct = reinterpret_cast<CephContext *>(m_ioctx.cct());
ldout(cct, 10) << dendl;
- librados::AioCompletion *aio_comp = create_rados_safe_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
RewatchRequest, &RewatchRequest::handle_rewatch>(this);
int r = m_ioctx.aio_watch(m_oid, aio_comp, &m_rewatch_handle, m_watch_ctx);
assert(r == 0);
namespace mirror {
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
using namespace rbd::mirror::image_replayer;
template <typename I>
librados::ObjectWriteOperation op;
librbd::cls_client::mirror_image_status_set(&op, m_global_image_id, status);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
ImageReplayer<I>, &ImageReplayer<I>::handle_mirror_status_update>(this);
int r = m_local_ioctx.aio_operate(RBD_MIRRORING, aio_comp, &op);
assert(r == 0);
using librbd::util::create_async_context_callback;
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
namespace {
librados::ObjectReadOperation op;
librbd::cls_client::mirror_instances_list_start(&op);
C_GetInstances *ctx = new C_GetInstances(instance_ids, on_finish);
- librados::AioCompletion *aio_comp = create_rados_ack_callback(ctx);
+ librados::AioCompletion *aio_comp = create_rados_callback(ctx);
int r = io_ctx.aio_operate(RBD_MIRROR_LEADER, aio_comp, &op, &ctx->out_bl);
assert(r == 0);
librados::ObjectWriteOperation op;
librbd::cls_client::mirror_instances_add(&op, m_instance_id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
InstanceWatcher<I>, &InstanceWatcher<I>::handle_register_instance>(this);
int r = m_ioctx.aio_operate(RBD_MIRROR_LEADER, aio_comp, &op);
librados::ObjectWriteOperation op;
op.create(true);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
InstanceWatcher<I>,
&InstanceWatcher<I>::handle_create_instance_object>(this);
int r = m_ioctx.aio_operate(m_oid, aio_comp, &op);
librados::ObjectWriteOperation op;
op.remove();
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
InstanceWatcher<I>,
&InstanceWatcher<I>::handle_remove_instance_object>(this);
int r = m_ioctx.aio_operate(m_oid, aio_comp, &op);
librados::ObjectWriteOperation op;
librbd::cls_client::mirror_instances_remove(&op, m_instance_id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
InstanceWatcher<I>, &InstanceWatcher<I>::handle_unregister_instance>(this);
int r = m_ioctx.aio_operate(RBD_MIRROR_LEADER, aio_comp, &op);
using librbd::util::create_async_context_callback;
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
Instances<I>::Instances(Threads *threads, librados::IoCtx &ioctx) :
using librbd::util::create_async_context_callback;
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
LeaderWatcher<I>::LeaderWatcher(Threads *threads, librados::IoCtx &io_ctx,
librados::ObjectWriteOperation op;
op.create(false);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
LeaderWatcher<I>, &LeaderWatcher<I>::handle_create_leader_object>(this);
int r = m_ioctx.aio_operate(m_oid, aio_comp, &op);
assert(r == 0);
namespace rbd {
namespace mirror {
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
MirrorStatusWatcher<I>::MirrorStatusWatcher(librados::IoCtx &io_ctx,
librados::ObjectWriteOperation op;
librbd::cls_client::mirror_image_status_remove_down(&op);
- librados::AioCompletion *aio_comp = create_rados_ack_callback(on_finish);
+ librados::AioCompletion *aio_comp = create_rados_callback(on_finish);
int r = m_ioctx.aio_operate(RBD_MIRRORING, aio_comp, &op);
assert(r == 0);
namespace image_replayer {
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
using librbd::util::unique_lock_name;
template <typename I>
librados::ObjectReadOperation op;
librbd::cls_client::mirror_image_get_image_id_start(&op, m_global_image_id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
BootstrapRequest<I>, &BootstrapRequest<I>::handle_get_local_image_id>(
this);
int r = m_local_io_ctx.aio_operate(RBD_MIRRORING, aio_comp, &op, &m_out_bl);
<< this << " " << __func__
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
namespace rbd {
namespace mirror {
librados::ObjectReadOperation op;
librbd::cls_client::mirror_image_get_start(&op, m_remote_parent_spec.image_id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
CreateImageRequest<I>,
&CreateImageRequest<I>::handle_get_parent_global_image_id>(this);
m_out_bl.clear();
librbd::cls_client::mirror_image_get_image_id_start(
&op, m_parent_global_image_id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
CreateImageRequest<I>,
&CreateImageRequest<I>::handle_get_local_parent_image_id>(this);
m_out_bl.clear();
namespace image_replayer {
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
IsPrimaryRequest<I>::IsPrimaryRequest(I *image_ctx, bool *primary,
librados::ObjectReadOperation op;
librbd::cls_client::mirror_image_get_start(&op, m_image_ctx->id);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
IsPrimaryRequest<I>, &IsPrimaryRequest<I>::handle_get_mirror_state>(this);
int r = m_image_ctx->md_ctx.aio_operate(RBD_MIRRORING, aio_comp, &op,
&m_out_bl);
namespace image_sync {
using librbd::util::create_context_callback;
-using librbd::util::create_rados_ack_callback;
-using librbd::util::create_rados_safe_callback;
+using librbd::util::create_rados_callback;
template <typename I>
ObjectCopyRequest<I>::ObjectCopyRequest(I *local_image_ctx, I *remote_image_ctx,
void ObjectCopyRequest<I>::send_list_snaps() {
dout(20) << dendl;
- librados::AioCompletion *rados_completion = create_rados_ack_callback<
+ librados::AioCompletion *rados_completion = create_rados_callback<
ObjectCopyRequest<I>, &ObjectCopyRequest<I>::handle_list_snaps>(this);
librados::ObjectReadOperation op;
return;
}
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
ObjectCopyRequest<I>, &ObjectCopyRequest<I>::handle_read_object>(this);
int r = m_remote_io_ctx.aio_operate(m_remote_oid, comp, &op, nullptr);
assert(r == 0);
}
}
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
ObjectCopyRequest<I>, &ObjectCopyRequest<I>::handle_write_object>(this);
int r = m_local_io_ctx.aio_operate(m_local_oid, comp, &op, local_snap_seq,
local_snap_ids);
namespace image_sync {
using librbd::util::create_context_callback;
-using librbd::util::create_rados_safe_callback;
+using librbd::util::create_rados_callback;
template <typename I>
SnapshotCreateRequest<I>::SnapshotCreateRequest(I *local_image_ctx,
librados::ObjectWriteOperation op;
librbd::cls_client::set_size(&op, m_size);
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
SnapshotCreateRequest<I>, &SnapshotCreateRequest<I>::handle_set_size>(this);
int r = m_local_image_ctx->md_ctx.aio_operate(m_local_image_ctx->header_oid,
comp, &op);
librados::ObjectWriteOperation op;
librbd::cls_client::remove_parent(&op);
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_remove_parent>(this);
int r = m_local_image_ctx->md_ctx.aio_operate(m_local_image_ctx->header_oid,
librados::ObjectWriteOperation op;
librbd::cls_client::set_parent(&op, m_parent_spec, m_parent_overlap);
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_set_parent>(this);
int r = m_local_image_ctx->md_ctx.aio_operate(m_local_image_ctx->header_oid,
librados::ObjectWriteOperation op;
librbd::cls_client::object_map_resize(&op, object_count, OBJECT_NONEXISTENT);
- librados::AioCompletion *comp = create_rados_safe_callback<
+ librados::AioCompletion *comp = create_rados_callback<
SnapshotCreateRequest<I>,
&SnapshotCreateRequest<I>::handle_create_object_map>(this);
int r = m_local_image_ctx->md_ctx.aio_operate(object_map_oid, comp, &op);
static const uint32_t MAX_RETURN = 1024;
-using librbd::util::create_rados_ack_callback;
+using librbd::util::create_rados_callback;
template <typename I>
void RefreshImagesRequest<I>::send() {
librados::ObjectReadOperation op;
librbd::cls_client::mirror_image_list_start(&op, m_start_after, MAX_RETURN);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
RefreshImagesRequest<I>,
&RefreshImagesRequest<I>::handle_mirror_image_list>(this);
int r = m_remote_io_ctx.aio_operate(RBD_MIRRORING, aio_comp, &op, &m_out_bl);
librados::ObjectReadOperation op;
librbd::cls_client::dir_list_start(&op, m_start_after, MAX_RETURN);
- librados::AioCompletion *aio_comp = create_rados_ack_callback<
+ librados::AioCompletion *aio_comp = create_rados_callback<
RefreshImagesRequest<I>,
&RefreshImagesRequest<I>::handle_dir_list>(this);
int r = m_remote_io_ctx.aio_operate(RBD_DIRECTORY, aio_comp, &op, &m_out_bl);