From: Mykola Golub Date: Sun, 5 Jan 2020 09:10:24 +0000 (+0000) Subject: rbd-mirror: delay local/remote rados initialization until context created X-Git-Tag: v13.2.9~110^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=2ec067d7ade1e4e8092f58e1951bc146ce0d9122;p=ceph.git rbd-mirror: delay local/remote rados initialization until context created We rely on that if a rados ref is initialized it contains the valid context. Signed-off-by: Mykola Golub (cherry picked from commit f3b49191771d2a3a20a7f55a14e0a7482ee96172) --- diff --git a/src/tools/rbd_mirror/PoolReplayer.cc b/src/tools/rbd_mirror/PoolReplayer.cc index 049461e890c5..e9c3991970db 100644 --- a/src/tools/rbd_mirror/PoolReplayer.cc +++ b/src/tools/rbd_mirror/PoolReplayer.cc @@ -403,8 +403,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 @@ -488,6 +486,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();