From dba8eb7e3c1beb9656216eaeed4cc0cd4ee1edb3 Mon Sep 17 00:00:00 2001 From: Ricardo Dias Date: Mon, 10 Apr 2017 14:31:54 +0100 Subject: [PATCH] rbd: added image_id param to Utils::init_and_open_image Signed-off-by: Ricardo Dias --- src/tools/rbd/Utils.cc | 9 +++++++-- src/tools/rbd/Utils.h | 1 + src/tools/rbd/action/Bench.cc | 2 +- src/tools/rbd/action/Children.cc | 2 +- src/tools/rbd/action/Copy.cc | 2 +- src/tools/rbd/action/Diff.cc | 2 +- src/tools/rbd/action/Export.cc | 4 ++-- src/tools/rbd/action/Feature.cc | 2 +- src/tools/rbd/action/Flatten.cc | 2 +- src/tools/rbd/action/ImageMeta.cc | 8 ++++---- src/tools/rbd/action/Import.cc | 2 +- src/tools/rbd/action/Kernel.cc | 2 +- src/tools/rbd/action/Lock.cc | 6 +++--- src/tools/rbd/action/MirrorImage.cc | 10 +++++----- src/tools/rbd/action/ObjectMap.cc | 4 ++-- src/tools/rbd/action/Resize.cc | 2 +- src/tools/rbd/action/Snap.cc | 16 ++++++++-------- src/tools/rbd/action/Status.cc | 2 +- src/tools/rbd/action/Watch.cc | 2 +- 19 files changed, 43 insertions(+), 37 deletions(-) diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index 82a7bc5189bc3..7e122485c2f7d 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -525,7 +525,7 @@ int get_pool_journal_names(const po::variables_map &vm, librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - int r = init_and_open_image(*pool_name, image_name, "", true, &rados, + int r = init_and_open_image(*pool_name, image_name, "", "", true, &rados, &io_ctx, &image); if (r < 0) { std::cerr << "rbd: failed to open image " << image_name @@ -861,6 +861,7 @@ int open_image(librados::IoCtx &io_ctx, const std::string &image_name, int init_and_open_image(const std::string &pool_name, const std::string &image_name, + const std::string &image_id, const std::string &snap_name, bool read_only, librados::Rados *rados, librados::IoCtx *io_ctx, librbd::Image *image) { @@ -869,7 +870,11 @@ int init_and_open_image(const std::string &pool_name, return r; } - r = open_image(*io_ctx, image_name, read_only, image); + if (image_id.empty()) { + r = open_image(*io_ctx, image_name, read_only, image); + } else { + r = open_image_by_id(*io_ctx, image_id, read_only, image); + } if (r < 0) { return r; } diff --git a/src/tools/rbd/Utils.h b/src/tools/rbd/Utils.h index ae677e86e033d..e8e8c946cf1b3 100644 --- a/src/tools/rbd/Utils.h +++ b/src/tools/rbd/Utils.h @@ -170,6 +170,7 @@ int open_image(librados::IoCtx &io_ctx, const std::string &image_name, int init_and_open_image(const std::string &pool_name, const std::string &image_name, + const std::string &image_id, const std::string &snap_name, bool read_only, librados::Rados *rados, librados::IoCtx *io_ctx, librbd::Image *image); diff --git a/src/tools/rbd/action/Bench.cc b/src/tools/rbd/action/Bench.cc index 757b9f477f210..f40c899fd4895 100644 --- a/src/tools/rbd/action/Bench.cc +++ b/src/tools/rbd/action/Bench.cc @@ -388,7 +388,7 @@ int bench_execute(const po::variables_map &vm, io_type_t bench_io_type) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Children.cc b/src/tools/rbd/action/Children.cc index 8e49eabada05a..2008bbec02447 100644 --- a/src/tools/rbd/action/Children.cc +++ b/src/tools/rbd/action/Children.cc @@ -74,7 +74,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, true, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, true, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Copy.cc b/src/tools/rbd/action/Copy.cc index 6d4fbceb92447..3b20085dca5d1 100644 --- a/src/tools/rbd/action/Copy.cc +++ b/src/tools/rbd/action/Copy.cc @@ -72,7 +72,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, true, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, true, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Diff.cc b/src/tools/rbd/action/Diff.cc index 3db9e3047bd23..bbc6c13b2e709 100644 --- a/src/tools/rbd/action/Diff.cc +++ b/src/tools/rbd/action/Diff.cc @@ -115,7 +115,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, true, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, true, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Export.cc b/src/tools/rbd/action/Export.cc index e41920819b64c..1be951028b4aa 100644 --- a/src/tools/rbd/action/Export.cc +++ b/src/tools/rbd/action/Export.cc @@ -275,7 +275,7 @@ int execute_diff(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, true, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, true, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -568,7 +568,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, true, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, true, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Feature.cc b/src/tools/rbd/action/Feature.cc index d1b6d1fd50d4d..94a800b76f94e 100644 --- a/src/tools/rbd/action/Feature.cc +++ b/src/tools/rbd/action/Feature.cc @@ -72,7 +72,7 @@ int execute(const po::variables_map &vm, bool enabled) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Flatten.cc b/src/tools/rbd/action/Flatten.cc index 4d231fdacaa67..f592d8685a6a2 100644 --- a/src/tools/rbd/action/Flatten.cc +++ b/src/tools/rbd/action/Flatten.cc @@ -48,7 +48,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/ImageMeta.cc b/src/tools/rbd/action/ImageMeta.cc index 13d9be7ca0d22..d3147ab0e9ca9 100644 --- a/src/tools/rbd/action/ImageMeta.cc +++ b/src/tools/rbd/action/ImageMeta.cc @@ -144,7 +144,7 @@ int execute_list(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -186,7 +186,7 @@ int execute_get(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -236,7 +236,7 @@ int execute_set(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -278,7 +278,7 @@ int execute_remove(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Import.cc b/src/tools/rbd/action/Import.cc index 6d0e4bfe06cf0..c76ea1328e2ea 100644 --- a/src/tools/rbd/action/Import.cc +++ b/src/tools/rbd/action/Import.cc @@ -454,7 +454,7 @@ int execute_diff(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Kernel.cc b/src/tools/rbd/action/Kernel.cc index 6d7a360685f93..3db901d3da75b 100644 --- a/src/tools/rbd/action/Kernel.cc +++ b/src/tools/rbd/action/Kernel.cc @@ -227,7 +227,7 @@ static void print_error_description(const char *poolname, const char *imgname, if (maperrno == -ENOENT) goto done; - r = utils::init_and_open_image(poolname, imgname, snapname, + r = utils::init_and_open_image(poolname, imgname, "", snapname, true, &rados, &ioctx, &image); if (r < 0) goto done; diff --git a/src/tools/rbd/action/Lock.cc b/src/tools/rbd/action/Lock.cc index f083cafb075d1..60d63e8efd21c 100644 --- a/src/tools/rbd/action/Lock.cc +++ b/src/tools/rbd/action/Lock.cc @@ -130,7 +130,7 @@ int execute_list(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", true, + r = utils::init_and_open_image(pool_name, image_name, "", "", true, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -178,7 +178,7 @@ int execute_add(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -237,7 +237,7 @@ int execute_remove(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/MirrorImage.cc b/src/tools/rbd/action/MirrorImage.cc index e1b6d40132c00..70cd91f394c7d 100644 --- a/src/tools/rbd/action/MirrorImage.cc +++ b/src/tools/rbd/action/MirrorImage.cc @@ -60,7 +60,7 @@ int execute_enable_disable(const po::variables_map &vm, bool enable, librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -109,7 +109,7 @@ int execute_promote(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -140,7 +140,7 @@ int execute_demote(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -171,7 +171,7 @@ int execute_resync(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -214,7 +214,7 @@ int execute_status(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/ObjectMap.cc b/src/tools/rbd/action/ObjectMap.cc index dfd387b4d94f5..35e4ca0c5cb95 100644 --- a/src/tools/rbd/action/ObjectMap.cc +++ b/src/tools/rbd/action/ObjectMap.cc @@ -50,7 +50,7 @@ int execute_rebuild(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, false, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -100,7 +100,7 @@ int execute_check(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, false, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Resize.cc b/src/tools/rbd/action/Resize.cc index df75d6b29a960..4b58a083d1451 100644 --- a/src/tools/rbd/action/Resize.cc +++ b/src/tools/rbd/action/Resize.cc @@ -57,7 +57,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, snap_name, false, + r = utils::init_and_open_image(pool_name, image_name, "", snap_name, false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Snap.cc b/src/tools/rbd/action/Snap.cc index 9d6d45f64c998..17c7c180db2b8 100644 --- a/src/tools/rbd/action/Snap.cc +++ b/src/tools/rbd/action/Snap.cc @@ -204,8 +204,8 @@ int execute_list(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", true, &rados, - &io_ctx, &image); + r = utils::init_and_open_image(pool_name, image_name, "", "", true, + &rados, &io_ctx, &image); if (r < 0) { return r; } @@ -239,7 +239,7 @@ int execute_create(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -368,7 +368,7 @@ int execute_rollback(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -403,7 +403,7 @@ int execute_protect(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -510,7 +510,7 @@ int execute_set_limit(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -546,7 +546,7 @@ int execute_clear_limit(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; @@ -604,7 +604,7 @@ int execute_rename(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", false, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", false, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Status.cc b/src/tools/rbd/action/Status.cc index 9d2951e4a29ef..7cd438a6ee7a7 100644 --- a/src/tools/rbd/action/Status.cc +++ b/src/tools/rbd/action/Status.cc @@ -106,7 +106,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", true, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", true, &rados, &io_ctx, &image); if (r < 0) { return r; diff --git a/src/tools/rbd/action/Watch.cc b/src/tools/rbd/action/Watch.cc index 741dc10ecdc61..4492ee85b07bc 100644 --- a/src/tools/rbd/action/Watch.cc +++ b/src/tools/rbd/action/Watch.cc @@ -109,7 +109,7 @@ int execute(const po::variables_map &vm) { librados::Rados rados; librados::IoCtx io_ctx; librbd::Image image; - r = utils::init_and_open_image(pool_name, image_name, "", true, &rados, + r = utils::init_and_open_image(pool_name, image_name, "", "", true, &rados, &io_ctx, &image); if (r < 0) { return r; -- 2.39.5