Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

librbd: rbd ack cleanup #13791

Merged
merged 1 commit into from Mar 8, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/librbd/AsyncRequest.cc
Expand Up @@ -27,7 +27,7 @@ void AsyncRequest<T>::async_complete(int r) {

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>
Expand Down
2 changes: 1 addition & 1 deletion src/librbd/DiffIterate.cc
Expand Up @@ -61,7 +61,7 @@ class C_DiffObject : public Context {
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);
Expand Down
2 changes: 1 addition & 1 deletion src/librbd/ImageWatcher.cc
Expand Up @@ -27,7 +27,7 @@ using namespace image_watcher;
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;

Expand Down
2 changes: 1 addition & 1 deletion src/librbd/LibrbdWriteback.cc
Expand Up @@ -216,7 +216,7 @@ namespace librbd {
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();
Expand Down
4 changes: 2 additions & 2 deletions src/librbd/MirroringWatcher.cc
Expand Up @@ -46,7 +46,7 @@ void MirroringWatcher<I>::notify_mode_updated(librados::IoCtx &io_ctx,
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);
Expand Down Expand Up @@ -76,7 +76,7 @@ void MirroringWatcher<I>::notify_image_updated(
::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);
Expand Down
2 changes: 1 addition & 1 deletion src/librbd/ObjectMap.cc
Expand Up @@ -185,7 +185,7 @@ void ObjectMap<I>::aio_save(Context *on_finish) {
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);
Expand Down
4 changes: 2 additions & 2 deletions src/librbd/Utils.cc
Expand Up @@ -41,8 +41,8 @@ std::string unique_lock_name(const std::string &name, void *address) {
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) {
Expand Down
26 changes: 4 additions & 22 deletions src/librbd/Utils.h
Expand Up @@ -100,44 +100,26 @@ const std::string header_name(const std::string &image_id);
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);
Expand Down
8 changes: 4 additions & 4 deletions src/librbd/Watcher.cc
Expand Up @@ -20,7 +20,7 @@ namespace librbd {
using namespace watcher;

using util::create_context_callback;
using util::create_rados_safe_callback;
using util::create_rados_callback;
using std::string;

namespace {
Expand All @@ -43,7 +43,7 @@ struct C_UnwatchAndFlush : public Context {
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();
Expand Down Expand Up @@ -87,7 +87,7 @@ void Watcher::register_watch(Context *on_finish) {
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);
Expand Down Expand Up @@ -141,7 +141,7 @@ void Watcher::unregister_watch(Context *on_finish) {
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);
Expand Down
4 changes: 1 addition & 3 deletions src/librbd/exclusive_lock/PostAcquireRequest.cc
Expand Up @@ -28,9 +28,7 @@ namespace exclusive_lock {

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,
Expand Down
4 changes: 1 addition & 3 deletions src/librbd/exclusive_lock/PreAcquireRequest.cc
Expand Up @@ -19,9 +19,7 @@ namespace exclusive_lock {

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,
Expand Down
26 changes: 13 additions & 13 deletions src/librbd/image/CreateRequest.cc
Expand Up @@ -23,7 +23,7 @@
namespace librbd {
namespace image {

using util::create_rados_ack_callback;
using util::create_rados_callback;
using util::create_context_callback;

namespace {
Expand Down Expand Up @@ -276,7 +276,7 @@ void CreateRequest<I>::validate_pool() {

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);
Expand Down Expand Up @@ -340,7 +340,7 @@ void CreateRequest<I>::create_id_object() {

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();
Expand Down Expand Up @@ -368,7 +368,7 @@ void CreateRequest<I>::add_image_to_directory() {

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();
Expand Down Expand Up @@ -404,7 +404,7 @@ void CreateRequest<I>::negotiate_features() {

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();
Expand Down Expand Up @@ -456,7 +456,7 @@ void CreateRequest<I>::create_image() {

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();
Expand Down Expand Up @@ -492,7 +492,7 @@ void CreateRequest<I>::set_stripe_unit_count() {

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();
Expand Down Expand Up @@ -528,7 +528,7 @@ void CreateRequest<I>::object_map_resize() {

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();
Expand Down Expand Up @@ -564,7 +564,7 @@ void CreateRequest<I>::fetch_mirror_mode() {

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);
Expand Down Expand Up @@ -738,7 +738,7 @@ void CreateRequest<I>::remove_object_map() {

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();
Expand All @@ -763,7 +763,7 @@ void CreateRequest<I>::remove_header_object() {

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();
Expand Down Expand Up @@ -791,7 +791,7 @@ void CreateRequest<I>::remove_from_dir() {

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();
Expand All @@ -816,7 +816,7 @@ void CreateRequest<I>::remove_id_object() {

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();
Expand Down
18 changes: 9 additions & 9 deletions src/librbd/image/OpenRequest.cc
Expand Up @@ -27,7 +27,7 @@ static uint64_t MAX_METADATA_ITEMS = 128;
}

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,
Expand All @@ -49,7 +49,7 @@ void OpenRequest<I>::send_v1_detect_header() {

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);
Expand Down Expand Up @@ -91,7 +91,7 @@ void OpenRequest<I>::send_v2_detect_header() {

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);
Expand Down Expand Up @@ -130,7 +130,7 @@ void OpenRequest<I>::send_v2_get_id() {

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);
Expand Down Expand Up @@ -168,7 +168,7 @@ void OpenRequest<I>::send_v2_get_name() {
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);
Expand Down Expand Up @@ -207,7 +207,7 @@ void OpenRequest<I>::send_v2_get_immutable_metadata() {
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,
Expand Down Expand Up @@ -245,7 +245,7 @@ void OpenRequest<I>::send_v2_get_stripe_unit_count() {
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,
Expand Down Expand Up @@ -288,7 +288,7 @@ void OpenRequest<I>::send_v2_get_data_pool() {
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,
Expand Down Expand Up @@ -343,7 +343,7 @@ void OpenRequest<I>::send_v2_apply_metadata() {

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);
Expand Down