From: Jason Dillaman Date: Tue, 25 Apr 2017 16:36:10 +0000 (-0400) Subject: librbd: remove duplicative journal helper functions X-Git-Tag: v12.0.3~177^2~2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c7aa9a818b91ddfd11e9f9a37ce0b646ff9c45b3;p=ceph-ci.git librbd: remove duplicative journal helper functions Signed-off-by: Jason Dillaman --- diff --git a/src/librbd/Journal.cc b/src/librbd/Journal.cc index 050a87b355a..792437f43be 100644 --- a/src/librbd/Journal.cc +++ b/src/librbd/Journal.cc @@ -455,25 +455,6 @@ int Journal::reset(librados::IoCtx &io_ctx, const std::string &image_id) { return 0; } -template -int Journal::is_tag_owner(I *image_ctx, bool *is_tag_owner) { - return Journal::is_tag_owner(image_ctx->md_ctx, image_ctx->id, - is_tag_owner, image_ctx->op_work_queue); -} - -template -int Journal::is_tag_owner(librados::IoCtx& io_ctx, std::string& image_id, - bool *is_tag_owner, ContextWQ *op_work_queue) { - C_SaferCond ctx; - Journal::is_tag_owner(io_ctx, image_id, is_tag_owner, op_work_queue, &ctx); - - int r = ctx.wait(); - if (r < 0) { - return r; - } - return r; -} - template void Journal::is_tag_owner(I *image_ctx, bool *owner, Context *on_finish) { @@ -495,19 +476,6 @@ void Journal::is_tag_owner(librados::IoCtx& io_ctx, std::string& image_id, &is_tag_owner_ctx->tag_data, is_tag_owner_ctx); } -template -int Journal::get_tag_owner(I *image_ctx, std::string *mirror_uuid) { - C_SaferCond get_tags_ctx; - get_tag_owner(image_ctx->md_ctx, image_ctx->id, mirror_uuid, - image_ctx->op_work_queue, &get_tags_ctx); - - int r = get_tags_ctx.wait(); - if (r < 0) { - return r; - } - return 0; -} - template void Journal::get_tag_owner(IoCtx& io_ctx, std::string& image_id, std::string *mirror_uuid, diff --git a/src/librbd/Journal.h b/src/librbd/Journal.h index 4aafefba6d7..b0db6e6ec06 100644 --- a/src/librbd/Journal.h +++ b/src/librbd/Journal.h @@ -102,15 +102,11 @@ public: static int remove(librados::IoCtx &io_ctx, const std::string &image_id); static int reset(librados::IoCtx &io_ctx, const std::string &image_id); - static int is_tag_owner(ImageCtxT *image_ctx, bool *is_tag_owner); - static int is_tag_owner(librados::IoCtx& io_ctx, std::string& image_id, - bool *is_tag_owner, ContextWQ *op_work_queue); static void is_tag_owner(ImageCtxT *image_ctx, bool *is_tag_owner, Context *on_finish); static void is_tag_owner(librados::IoCtx& io_ctx, std::string& image_id, bool *is_tag_owner, ContextWQ *op_work_queue, Context *on_finish); - static int get_tag_owner(ImageCtxT *image_ctx, std::string *mirror_uuid); static void get_tag_owner(librados::IoCtx& io_ctx, std::string& image_id, std::string *mirror_uuid, ContextWQ *op_work_queue, Context *on_finish); diff --git a/src/librbd/api/Mirror.cc b/src/librbd/api/Mirror.cc index 96b8421c98c..7f424746234 100644 --- a/src/librbd/api/Mirror.cc +++ b/src/librbd/api/Mirror.cc @@ -383,13 +383,15 @@ int Mirror::image_resync(I *ictx) { return r; } - std::string mirror_uuid; - r = Journal::get_tag_owner(ictx, &mirror_uuid); + C_SaferCond tag_owner_ctx; + bool is_tag_owner; + Journal::is_tag_owner(ictx, &is_tag_owner, &tag_owner_ctx); + r = tag_owner_ctx.wait(); if (r < 0) { lderr(cct) << "failed to determine tag ownership: " << cpp_strerror(r) << dendl; return r; - } else if (mirror_uuid == Journal<>::LOCAL_MIRROR_UUID) { + } else if (is_tag_owner) { lderr(cct) << "image is primary, cannot resync to itself" << dendl; return -EINVAL; } diff --git a/src/tools/rbd_mirror/ImageDeleter.cc b/src/tools/rbd_mirror/ImageDeleter.cc index 8791033b261..59ffaa291b6 100644 --- a/src/tools/rbd_mirror/ImageDeleter.cc +++ b/src/tools/rbd_mirror/ImageDeleter.cc @@ -295,8 +295,10 @@ bool ImageDeleter::process_image_delete() { } bool is_primary = false; - r = Journal<>::is_tag_owner(ioctx, local_image_id, &is_primary, - m_work_queue); + C_SaferCond tag_owner_ctx; + Journal<>::is_tag_owner(ioctx, local_image_id, &is_primary, + m_work_queue, &tag_owner_ctx); + r = tag_owner_ctx.wait(); if (r < 0 && r != -ENOENT) { derr << "error retrieving image primary info for image " << global_image_id << ": " << cpp_strerror(r) << dendl;