librados::Rados rados(src_io_ctx);
int r = rados.ioctx_create2(pool_id, *dst_io_ctx);
if (r == -ENOENT) {
- lderr(cct) << pool_desc << " pool " << pool_id << " no longer exists"
- << dendl;
+ ldout(cct, 1) << pool_desc << " pool " << pool_id << " no longer exists"
+ << dendl;
return r;
} else if (r < 0) {
lderr(cct) << "error accessing " << pool_desc << " pool " << pool_id
child_io_ctx.get_namespace() != image.pool_namespace) {
r = util::create_ioctx(ictx->md_ctx, "child image", image.pool_id,
image.pool_namespace, &child_io_ctx);
- if (r < 0) {
+ if (r == -ENOENT) {
+ image.pool_name = "";
+ image.image_name = "";
+ continue;
+ } else if (r < 0) {
return r;
}
child_pool_id = image.pool_id;
f->close_section();
}
} else if (all_flag || !trash) {
- std::cout << child.pool_name << "/";
+ if (child.pool_name.empty()) {
+ std::cout << "(child missing " << child.pool_id << "/";
+ } else {
+ std::cout << child.pool_name << "/";
+ }
if (!child.pool_namespace.empty()) {
std::cout << child.pool_namespace << "/";
}
- std::cout << child.image_name;
- if (trash) {
- std::cout << " (trash " << child.image_id << ")";
+ if (child.image_name.empty()) {
+ std::cout << child.image_id << ")";
+ } else {
+ std::cout << child.image_name;
+ if (trash) {
+ std::cout << " (trash " << child.image_id << ")";
+ }
}
std::cout << std::endl;
}