]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: utilize new API methods for image id and block name prefix 11353/head
authorJason Dillaman <dillaman@redhat.com>
Thu, 6 Oct 2016 16:56:31 +0000 (12:56 -0400)
committerJason Dillaman <dillaman@redhat.com>
Thu, 6 Oct 2016 18:50:21 +0000 (14:50 -0400)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
src/tools/rbd/Utils.cc
src/tools/rbd/action/Info.cc
src/tools/rbd/action/Status.cc
src/tools/rbd/action/Watch.cc

index b9ad35f9bece4e81777dfe69715c82e7e4f7ce21..e5c8fc6bd47acf4f1c346144de1402665bac3d86 100644 (file)
@@ -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) {
index e06324b9d4c2ccbb5700bd5bf5bc9bb9f0b81b37..cb0542bfc3a9cab2e6b716fe86b90b6e84ca560d 100644 (file)
@@ -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);
index ab37bc8644c1b077b5f3d52b81a0c1aede8d8627..a6944f0d1a571b43516ecacd95d75a8c80e539d2 100644 (file)
@@ -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);
index 65be93d6dea884766a281a37220ccb27491caae2..80caeeee463b63ff33889afce73939de355ccd0f 100644 (file)
@@ -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;