]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rbd-mirror: delay local/remote rados initialization until context created
authorMykola Golub <mgolub@suse.com>
Sun, 5 Jan 2020 09:10:24 +0000 (09:10 +0000)
committerMykola Golub <mgolub@suse.com>
Fri, 10 Jan 2020 18:41:35 +0000 (20:41 +0200)
We rely on that if a rados ref is initialized it contains the
valid context.

Signed-off-by: Mykola Golub <mgolub@suse.com>
(cherry picked from commit f3b49191771d2a3a20a7f55a14e0a7482ee96172)

Conflicts:
src/tools/rbd_mirror/PoolReplayer.cc (trivial)

src/tools/rbd_mirror/PoolReplayer.cc

index 1edd145b332d0580328a29725c3f14449f4d1370..f48c1bc913b2ac3fbbc2aa3f23fc88b99ee8c83b 100644 (file)
@@ -383,8 +383,6 @@ int PoolReplayer::init_rados(const std::string &cluster_name,
                             const std::string &description,
                             RadosRef *rados_ref,
                              bool strip_cluster_overrides) {
-  rados_ref->reset(new librados::Rados());
-
   // NOTE: manually bootstrap a CephContext here instead of via
   // the librados API to avoid mixing global singletons between
   // the librados shared library and the daemon
@@ -468,6 +466,8 @@ int PoolReplayer::init_rados(const std::string &cluster_name,
   cct->_conf->apply_changes(nullptr);
   cct->_conf->complain_about_parse_errors(cct);
 
+  rados_ref->reset(new librados::Rados());
+
   r = (*rados_ref)->init_with_context(cct);
   assert(r == 0);
   cct->put();