From 50e5c089587b189978c595adf51aa2e62535c8c0 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 16 Oct 2018 07:17:04 -0700 Subject: [PATCH] rgw: svc: support raw storage init Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_rados.cc | 19 +++++++++++++++++-- src/rgw/rgw_rados.h | 1 + src/rgw/rgw_service.cc | 27 ++++++++++++++++----------- src/rgw/rgw_service.h | 12 ++++++++++-- 4 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 3f743eac40e..d7d59850201 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -1647,6 +1647,15 @@ int RGWRados::init_complete() return ret; } +int RGWRados::init_svc(bool raw) +{ + if (raw) { + return svc.init_raw(cct, use_cache); + } + + return svc.init(cct, use_cache); +} + /** * Initialize the RADOS instance and prepare to do other ops * Returns 0 on success, -ERR# on failure. @@ -1659,7 +1668,7 @@ int RGWRados::initialize() cct->_conf.get_val("rgw_inject_notify_timeout_probability"); max_notify_retries = cct->_conf.get_val("rgw_max_notify_retries"); - ret = svc.init(cct, use_cache); + ret = init_svc(false); if (ret < 0) { ldout(cct, 0) << "ERROR: failed to init services (ret=" << cpp_strerror(-ret) << ")" << dendl; return ret; @@ -9892,9 +9901,15 @@ RGWRados *RGWStoreManager::init_raw_storage_provider(CephContext *cct) store->set_context(cct); + int ret = store->init_svc(true); + if (ret < 0) { + ldout(cct, 0) << "ERROR: failed to init services (ret=" << cpp_strerror(-ret) << ")" << dendl; + return nullptr; + } + if (store->init_rados() < 0) { delete store; - return NULL; + return nullptr; } return store; diff --git a/src/rgw/rgw_rados.h b/src/rgw/rgw_rados.h index 14013412bb8..a58f50bed25 100644 --- a/src/rgw/rgw_rados.h +++ b/src/rgw/rgw_rados.h @@ -1412,6 +1412,7 @@ public: return initialize(); } /** Initialize the RADOS instance and prepare to do other ops */ + int init_svc(bool raw); int init_rados(); int init_complete(); int initialize(); diff --git a/src/rgw/rgw_service.cc b/src/rgw/rgw_service.cc index 9324d641815..ea5d6520e45 100644 --- a/src/rgw/rgw_service.cc +++ b/src/rgw/rgw_service.cc @@ -23,7 +23,8 @@ RGWServices_Def::~RGWServices_Def() } int RGWServices_Def::init(CephContext *cct, - bool have_cache) + bool have_cache, + bool raw) { finisher = std::make_unique(cct); notify = std::make_unique(cct); @@ -60,10 +61,12 @@ int RGWServices_Def::init(CephContext *cct, return r; } - r = notify->start(); - if (r < 0) { - ldout(cct, 0) << "ERROR: failed to start notify service (" << cpp_strerror(-r) << dendl; - return r; + if (!raw) { + r = notify->start(); + if (r < 0) { + ldout(cct, 0) << "ERROR: failed to start notify service (" << cpp_strerror(-r) << dendl; + return r; + } } r = rados->start(); @@ -72,10 +75,12 @@ int RGWServices_Def::init(CephContext *cct, return r; } - r = zone->start(); - if (r < 0) { - ldout(cct, 0) << "ERROR: failed to start zone service (" << cpp_strerror(-r) << dendl; - return r; + if (!raw) { + r = zone->start(); + if (r < 0) { + ldout(cct, 0) << "ERROR: failed to start zone service (" << cpp_strerror(-r) << dendl; + return r; + } } r = zone_utils->start(); @@ -137,9 +142,9 @@ void RGWServices_Def::shutdown() } -int RGWServices::init(CephContext *cct, bool have_cache) +int RGWServices::do_init(CephContext *cct, bool have_cache, bool raw) { - int r = _svc.init(cct, have_cache); + int r = _svc.init(cct, have_cache, raw); if (r < 0) { return r; } diff --git a/src/rgw/rgw_service.h b/src/rgw/rgw_service.h index abcb050d26e..16ded3255ac 100644 --- a/src/rgw/rgw_service.h +++ b/src/rgw/rgw_service.h @@ -70,7 +70,7 @@ struct RGWServices_Def RGWServices_Def(); ~RGWServices_Def(); - int init(CephContext *cct, bool have_cache); + int init(CephContext *cct, bool have_cache, bool raw_storage); void shutdown(); }; @@ -90,7 +90,15 @@ struct RGWServices RGWSI_SysObj_Cache *cache{nullptr}; RGWSI_SysObj_Core *core{nullptr}; - int init(CephContext *cct, bool have_cache); + int do_init(CephContext *cct, bool have_cache, bool raw_storage); + + int init(CephContext *cct, bool have_cache) { + return do_init(cct, have_cache, false); + } + + int init_raw(CephContext *cct, bool have_cache) { + return do_init(cct, have_cache, true); + } void shutdown() { _svc.shutdown(); } -- 2.39.5