]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd: utilize new API methods for image id and block name prefix 12529/head
authorJason Dillaman <dillaman@redhat.com>
Thu, 6 Oct 2016 16:56:31 +0000 (12:56 -0400)
committerNathan Cutler <ncutler@suse.com>
Fri, 16 Dec 2016 15:01:26 +0000 (16:01 +0100)
Signed-off-by: Jason Dillaman <dillaman@redhat.com>
(cherry picked from commit 0a0a88c71552aa5858384fa802a3161da90e7c86)

 Conflicts:
src/tools/rbd/action/Info.cc (jewel does not have
                653bc453e3c8f1062cdbc4d0d8f77f623f48915b)

src/tools/rbd/Utils.cc
src/tools/rbd/action/Info.cc
src/tools/rbd/action/Status.cc
src/tools/rbd/action/Watch.cc

index bc67f5dfa28991a19f2c2beae504983bcfe44a5f..618d257a463ae160f00ddff94bbfa96905e5d808 100644 (file)
@@ -644,17 +644,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 8e31e45028da0a23c7dc3bb91bf7f6050c62277a..3be863a2a1f237aa9e0fb767ec64c399e59c5dde 100644 (file)
@@ -108,9 +108,7 @@ static int do_show_info(const char *imgname, librbd::Image& image,
     }
   }
 
-  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();
 
   if (f) {
     f->open_object_section("image");
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;