From a2c9a622e62bdb1a5b0f5dd2a82ff2ce955557d5 Mon Sep 17 00:00:00 2001 From: songweibin Date: Tue, 28 Aug 2018 16:41:10 +0800 Subject: [PATCH] rbd: verify the specified namespace before set Signed-off-by: songweibin --- src/tools/rbd/Utils.cc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/tools/rbd/Utils.cc b/src/tools/rbd/Utils.cc index e436a876ab6af..722f4ba626159 100644 --- a/src/tools/rbd/Utils.cc +++ b/src/tools/rbd/Utils.cc @@ -665,6 +665,21 @@ int init_io_ctx(librados::Rados &rados, const std::string &pool_name, return r; } + if (!namespace_name.empty()) { + librbd::RBD rbd; + bool exists = false; + r = rbd.namespace_exists(*io_ctx, namespace_name.c_str(), &exists); + if (r < 0) { + std::cerr << "rbd: error asserting namespace: " + << cpp_strerror(r) << std::endl; + return r; + } + if (!exists) { + std::cerr << "rbd: namespace '" << namespace_name << "' does not exist." + << std::endl; + return -ENOENT; + } + } io_ctx->set_namespace(namespace_name); return 0; } -- 2.39.5