From: John Spray Date: Tue, 28 Apr 2015 14:45:53 +0000 (+0100) Subject: tools: refactor RadosImport to pass ioctx X-Git-Tag: v9.0.3~203^2~7 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a45f8fe11ba4845509903a12a44a49fa67a4c7cf;p=ceph.git tools: refactor RadosImport to pass ioctx Callers from rados.cc will already have an ioctx, whereas objectstoretool passes in a pool name. Signed-off-by: John Spray --- diff --git a/src/tools/RadosImport.cc b/src/tools/RadosImport.cc index fcb352604163..9fe06c3577bb 100644 --- a/src/tools/RadosImport.cc +++ b/src/tools/RadosImport.cc @@ -21,6 +21,39 @@ #define dout_subsys ceph_subsys_rados int RadosImport::import(std::string pool, bool no_overwrite) +{ + librados::IoCtx ioctx; + librados::Rados cluster; + + char *id = getenv("CEPH_CLIENT_ID"); + if (id) cerr << "Client id is: " << id << std::endl; + int ret = cluster.init(id); + if (ret) { + cerr << "Error " << ret << " in cluster.init" << std::endl; + return ret; + } + ret = cluster.conf_read_file(NULL); + if (ret) { + cerr << "Error " << ret << " in cluster.conf_read_file" << std::endl; + return ret; + } + ret = cluster.conf_parse_env(NULL); + if (ret) { + cerr << "Error " << ret << " in cluster.conf_read_env" << std::endl; + return ret; + } + cluster.connect(); + + ret = cluster.ioctx_create(pool.c_str(), ioctx); + if (ret < 0) { + cerr << "ioctx_create " << pool << " failed with " << ret << std::endl; + return ret; + } + + return import(ioctx, no_overwrite); +} + +int RadosImport::import(librados::IoCtx &io_ctx, bool no_overwrite) { bufferlist ebl; pg_info_t info; @@ -77,34 +110,6 @@ int RadosImport::import(std::string pool, bool no_overwrite) } #endif - librados::IoCtx ioctx; - librados::Rados cluster; - - char *id = getenv("CEPH_CLIENT_ID"); - if (id) cerr << "Client id is: " << id << std::endl; - ret = cluster.init(id); - if (ret) { - cerr << "Error " << ret << " in cluster.init" << std::endl; - return ret; - } - ret = cluster.conf_read_file(NULL); - if (ret) { - cerr << "Error " << ret << " in cluster.conf_read_file" << std::endl; - return ret; - } - ret = cluster.conf_parse_env(NULL); - if (ret) { - cerr << "Error " << ret << " in cluster.conf_read_env" << std::endl; - return ret; - } - cluster.connect(); - - ret = cluster.ioctx_create(pool.c_str(), ioctx); - if (ret < 0) { - cerr << "ioctx_create " << pool << " failed with " << ret << std::endl; - return ret; - } - bool done = false; bool found_metadata = false; while(!done) { @@ -119,7 +124,7 @@ int RadosImport::import(std::string pool, bool no_overwrite) } switch(type) { case TYPE_OBJECT_BEGIN: - ret = get_object_rados(ioctx, ebl, no_overwrite); + ret = get_object_rados(io_ctx, ebl, no_overwrite); if (ret) { cerr << "Error inserting object: " << ret << std::endl; return ret;