]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
librbd, rbd: fill in the rest of image_info_t
authorJosh Durgin <josh.durgin@dreamhost.com>
Thu, 24 Feb 2011 19:23:51 +0000 (11:23 -0800)
committerJosh Durgin <josh.durgin@dreamhost.com>
Thu, 24 Feb 2011 19:24:03 +0000 (11:24 -0800)
Signed-off-by: Josh Durgin <josh.durgin@dreamhost.com>
src/include/rbd/librbd.hpp
src/librbd.cc
src/rbd.cc

index da19f1b6d2a25b52583421a5939220b39f71a984..2d8dcafb3a3193aa1c058006e2124c3a957239c6 100644 (file)
@@ -39,15 +39,7 @@ namespace librbd {
     std::string name;
   } snap_info_t;
 
-  typedef struct {
-    uint64_t size;
-    uint64_t obj_size;
-    uint64_t num_objs;
-    int order;
-    char block_name_prefix[RBD_MAX_BLOCK_NAME_SIZE];
-    int parent_pool;                            /* -1 if none */
-    char parent_name[RBD_MAX_IMAGE_NAME_SIZE];  /* blank if none */
-  } image_info_t;
+  typedef rbd_image_info_t image_info_t;
 
 class RBD
 {
index 51ebec3488c0bee9c70d2a12c13166707e5c6f8b..cf90ad54cb8b2e4cdff32eb490935791a6594b4e 100644 (file)
@@ -311,6 +311,9 @@ void image_info(rbd_obj_header_ondisk& header, image_info_t& info, size_t infosi
   info.obj_size = 1 << obj_order;
   info.num_objs = header.image_size >> obj_order;
   info.order = obj_order;
+  memcpy(&info.block_name_prefix, &header.block_name, RBD_MAX_BLOCK_NAME_SIZE);
+  info.parent_pool = -1;
+  bzero(&info.parent_name, RBD_MAX_IMAGE_NAME_SIZE);
 }
 
 string get_block_oid(rbd_obj_header_ondisk *header, uint64_t num)
@@ -1595,17 +1598,8 @@ extern "C" int rbd_resize(rbd_image_t image, size_t size)
 
 extern "C" int rbd_stat(rbd_image_t image, rbd_image_info_t *info, size_t infosize)
 {
-  librbd::image_info_t cpp_info;
   librbd::ImageCtx *ictx = (librbd::ImageCtx *)image;
-  int r = librbd::info(ictx, cpp_info, infosize);
-  if (r < 0)
-    return r;
-
-  info->size = cpp_info.size;
-  info->obj_size = cpp_info.obj_size;
-  info->num_objs = cpp_info.num_objs;
-  info->order = cpp_info.order;
-  return 0;
+  return librbd::info(ictx, *info, infosize);
 }
 
 /* snapshots */
index fae59d9e2902f239436e2be10623f99d99395ac9..327fd32a31b10ac82ce7b03b39b9c8b8af3e094d 100644 (file)
@@ -88,9 +88,15 @@ static void print_info(const char *imgname, librbd::image_info_t& info)
 {
   cout << "rbd image '" << imgname << "':\n"
        << "\tsize " << prettybyte_t(info.size) << " in "
-       << info.num_objs << " objects\n"
+       << info.num_objs << " objects"
+       << std::endl
        << "\torder " << info.order
        << " (" << prettybyte_t(info.obj_size) << " objects)"
+       << std::endl
+       << "\tblock_name_prefix: " << info.block_name_prefix
+       << std::endl
+       << "\tparent: " << info.parent_name
+       << " (pool " << info.parent_pool << ")"
        << std::endl;
 }