From 0a0a88c71552aa5858384fa802a3161da90e7c86 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Thu, 6 Oct 2016 12:56:31 -0400 Subject: [PATCH] rbd: utilize new API methods for image id and block name prefix Signed-off-by: Jason Dillaman --- src/tools/rbd/Utils.cc | 13 ++++--------- src/tools/rbd/action/Info.cc | 4 +--- src/tools/rbd/action/Status.cc | 14 +++++--------- src/tools/rbd/action/Watch.cc | 12 +++--------- 4 files changed, 13 insertions(+), 30 deletions(-) diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index b9ad35f9bece4..e5c8fc6bd47ac 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -794,17 +794,12 @@ int snap_set(librbd::Image &image, const std::string &snap_name) { } std::string image_id(librbd::Image& image) { - librbd::image_info_t info; - int r = image.stat(info, sizeof(info)); + std::string id; + int r = image.get_id(&id); if (r < 0) { - return string(); + return std::string(); } - - char prefix[RBD_MAX_BLOCK_NAME_SIZE + 1]; - strncpy(prefix, info.block_name_prefix, RBD_MAX_BLOCK_NAME_SIZE); - prefix[RBD_MAX_BLOCK_NAME_SIZE] = '\0'; - - return string(prefix + strlen(RBD_DATA_PREFIX)); + return id; } std::string mirror_image_state(librbd::mirror_image_state_t state) { diff --git a/src/tools/rbd/action/Info.cc b/src/tools/rbd/action/Info.cc index e06324b9d4c2c..cb0542bfc3a9c 100644 --- a/src/tools/rbd/action/Info.cc +++ b/src/tools/rbd/action/Info.cc @@ -113,9 +113,7 @@ static int do_show_info(const char *imgname, librbd::Image& image, if (r < 0) return r; - char prefix[RBD_MAX_BLOCK_NAME_SIZE + 1]; - strncpy(prefix, info.block_name_prefix, RBD_MAX_BLOCK_NAME_SIZE); - prefix[RBD_MAX_BLOCK_NAME_SIZE] = '\0'; + std::string prefix = image.get_block_name_prefix(); librbd::group_spec_t group_spec; r = image.get_group(&group_spec); diff --git a/src/tools/rbd/action/Status.cc b/src/tools/rbd/action/Status.cc index ab37bc8644c1b..a6944f0d1a571 100644 --- a/src/tools/rbd/action/Status.cc +++ b/src/tools/rbd/action/Status.cc @@ -20,7 +20,6 @@ namespace po = boost::program_options; static int do_show_status(librados::IoCtx &io_ctx, librbd::Image &image, const char *imgname, Formatter *f) { - librbd::image_info_t info; uint8_t old_format; int r; std::string header_oid; @@ -34,16 +33,13 @@ static int do_show_status(librados::IoCtx &io_ctx, librbd::Image &image, header_oid = imgname; header_oid += RBD_SUFFIX; } else { - r = image.stat(info, sizeof(info)); - if (r < 0) + std::string id; + r = image.get_id(&id); + if (r < 0) { return r; + } - char prefix[RBD_MAX_BLOCK_NAME_SIZE + 1]; - strncpy(prefix, info.block_name_prefix, RBD_MAX_BLOCK_NAME_SIZE); - prefix[RBD_MAX_BLOCK_NAME_SIZE] = '\0'; - - header_oid = RBD_HEADER_PREFIX; - header_oid.append(prefix + strlen(RBD_DATA_PREFIX)); + header_oid = RBD_HEADER_PREFIX + id; } r = io_ctx.list_watchers(header_oid, &watchers); diff --git a/src/tools/rbd/action/Watch.cc b/src/tools/rbd/action/Watch.cc index 65be93d6dea88..80caeeee463b6 100644 --- a/src/tools/rbd/action/Watch.cc +++ b/src/tools/rbd/action/Watch.cc @@ -61,19 +61,13 @@ static int do_watch(librados::IoCtx& pp, librbd::Image &image, if (old_format != 0) { header_oid = std::string(imgname) + RBD_SUFFIX; } else { - librbd::image_info_t info; - r = image.stat(info, sizeof(info)); + std::string id; + r = image.get_id(&id); if (r < 0) { - std::cerr << "failed to stat image" << std::endl; return r; } - char prefix[RBD_MAX_BLOCK_NAME_SIZE + 1]; - strncpy(prefix, info.block_name_prefix, RBD_MAX_BLOCK_NAME_SIZE); - prefix[RBD_MAX_BLOCK_NAME_SIZE] = '\0'; - - std::string image_id(prefix + strlen(RBD_DATA_PREFIX)); - header_oid = RBD_HEADER_PREFIX + image_id; + header_oid = RBD_HEADER_PREFIX + id; } uint64_t cookie; -- 2.39.5