}
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) {
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);
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;
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);
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;