From 8c56a2327fa7fe89ef545118a1a54936c0c759a7 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Mon, 4 Dec 2023 17:38:45 -0500 Subject: [PATCH] rgw/service: remove unused metadata and metadata backend services Signed-off-by: Casey Bodley --- src/rgw/CMakeLists.txt | 3 - src/rgw/driver/rados/rgw_bucket.cc | 1 - src/rgw/driver/rados/rgw_bucket.h | 13 -- src/rgw/driver/rados/rgw_metadata.h | 153 +----------- src/rgw/driver/rados/rgw_sal_rados.cc | 9 +- src/rgw/driver/rados/rgw_service.cc | 33 +-- src/rgw/driver/rados/rgw_service.h | 8 - src/rgw/driver/rados/rgw_trim_bilog.cc | 1 - src/rgw/driver/rados/rgw_trim_mdlog.cc | 1 - src/rgw/driver/rados/rgw_user.cc | 1 - src/rgw/rgw_mdlog.h | 3 + src/rgw/rgw_metadata.cc | 212 +---------------- src/rgw/rgw_quota.cc | 1 - src/rgw/rgw_role.cc | 2 - src/rgw/services/svc_bucket_sobj.cc | 5 +- src/rgw/services/svc_bucket_sobj.h | 3 - src/rgw/services/svc_bucket_sync_sobj.h | 1 - src/rgw/services/svc_mdlog.h | 2 - src/rgw/services/svc_meta.cc | 46 ---- src/rgw/services/svc_meta.h | 48 ---- src/rgw/services/svc_meta_be.cc | 193 ---------------- src/rgw/services/svc_meta_be.h | 294 ------------------------ src/rgw/services/svc_meta_be_params.h | 25 -- src/rgw/services/svc_meta_be_sobj.cc | 246 -------------------- src/rgw/services/svc_meta_be_sobj.h | 194 ---------------- src/rgw/services/svc_meta_be_types.h | 25 -- src/rgw/services/svc_user_rados.cc | 5 +- src/rgw/services/svc_user_rados.h | 5 +- 28 files changed, 16 insertions(+), 1517 deletions(-) delete mode 100644 src/rgw/services/svc_meta.cc delete mode 100644 src/rgw/services/svc_meta.h delete mode 100644 src/rgw/services/svc_meta_be.cc delete mode 100644 src/rgw/services/svc_meta_be.h delete mode 100644 src/rgw/services/svc_meta_be_params.h delete mode 100644 src/rgw/services/svc_meta_be_sobj.cc delete mode 100644 src/rgw/services/svc_meta_be_sobj.h delete mode 100644 src/rgw/services/svc_meta_be_types.h diff --git a/src/rgw/CMakeLists.txt b/src/rgw/CMakeLists.txt index 9f9099f31638f..329b01d2cacce 100644 --- a/src/rgw/CMakeLists.txt +++ b/src/rgw/CMakeLists.txt @@ -40,9 +40,6 @@ set(librgw_common_srcs services/svc_cls.cc services/svc_config_key_rados.cc services/svc_mdlog.cc - services/svc_meta.cc - services/svc_meta_be.cc - services/svc_meta_be_sobj.cc services/svc_notify.cc services/svc_quota.cc services/svc_sync_modules.cc diff --git a/src/rgw/driver/rados/rgw_bucket.cc b/src/rgw/driver/rados/rgw_bucket.cc index 3152aedd85fb4..21d238d334180 100644 --- a/src/rgw/driver/rados/rgw_bucket.cc +++ b/src/rgw/driver/rados/rgw_bucket.cc @@ -3099,7 +3099,6 @@ int RGWBucketCtl::read_bucket_info(const rgw_bucket& bucket, ep.emplace(); int r = read_bucket_entrypoint_info(*b, &(*ep), y, dpp, RGWBucketCtl::Bucket::GetParams() - .set_bectx_params(params.bectx_params) .set_objv_tracker(ep_objv_tracker)); if (r < 0) { return r; diff --git a/src/rgw/driver/rados/rgw_bucket.h b/src/rgw/driver/rados/rgw_bucket.h index a93a02a274b0c..85434ba7299cb 100644 --- a/src/rgw/driver/rados/rgw_bucket.h +++ b/src/rgw/driver/rados/rgw_bucket.h @@ -31,7 +31,6 @@ // define as static when RGWBucket implementation completes extern void rgw_get_buckets_obj(const rgw_user& user_id, std::string& buckets_obj_id); -class RGWSI_Meta; class RGWBucketMetadataHandler; class RGWBucketInstanceMetadataHandler; class RGWUserCtl; @@ -449,7 +448,6 @@ public: std::map *attrs{nullptr}; rgw_cache_entry_info *cache_info{nullptr}; boost::optional refresh_version; - std::optional bectx_params; GetParams() {} @@ -477,11 +475,6 @@ public: refresh_version = _refresh_version; return *this; } - - GetParams& set_bectx_params(std::optional _bectx_params) { - bectx_params = _bectx_params; - return *this; - } }; struct PutParams { @@ -532,7 +525,6 @@ public: rgw_cache_entry_info *cache_info{nullptr}; boost::optional refresh_version; RGWObjVersionTracker *objv_tracker{nullptr}; - std::optional bectx_params; GetParams() {} @@ -560,11 +552,6 @@ public: objv_tracker = _objv_tracker; return *this; } - - GetParams& set_bectx_params(std::optional _bectx_params) { - bectx_params = _bectx_params; - return *this; - } }; struct PutParams { diff --git a/src/rgw/driver/rados/rgw_metadata.h b/src/rgw/driver/rados/rgw_metadata.h index c83db7c40437b..30425542a1b96 100644 --- a/src/rgw/driver/rados/rgw_metadata.h +++ b/src/rgw/driver/rados/rgw_metadata.h @@ -15,7 +15,6 @@ #include "cls/log/cls_log_types.h" #include "common/RefCountedObj.h" #include "common/ceph_time.h" -#include "services/svc_meta_be.h" #include "rgw_sal_fwd.h" @@ -54,18 +53,11 @@ class RGWMetadataManager; class RGWMetadataHandler { friend class RGWMetadataManager; -protected: - CephContext *cct; - public: RGWMetadataHandler() {} virtual ~RGWMetadataHandler(); virtual std::string get_type() = 0; - void base_init(CephContext *_cct) { - cct = _cct; - } - virtual RGWMetadataObject *get_meta_obj(JSONObj *jo, const obj_version& objv, const ceph::real_time& mtime) = 0; virtual int get(std::string& entry, RGWMetadataObject **obj, optional_yield, const DoutPrefixProvider *dpp) = 0; @@ -99,132 +91,12 @@ public: virtual int attach(RGWMetadataManager *manager); }; -class RGWMetadataHandler_GenericMetaBE : public RGWMetadataHandler { - friend class RGWSI_MetaBackend; - friend class RGWMetadataManager; - friend class Put; - -public: - class Put; - -protected: - RGWSI_MetaBackend_Handler *be_handler; - - virtual int do_get(RGWSI_MetaBackend_Handler::Op *op, std::string& entry, RGWMetadataObject **obj, optional_yield y, const DoutPrefixProvider *dpp) = 0; - virtual int do_put(RGWSI_MetaBackend_Handler::Op *op, std::string& entry, RGWMetadataObject *obj, - RGWObjVersionTracker& objv_tracker, optional_yield y, - const DoutPrefixProvider *dpp, RGWMDLogSyncType type, - bool from_remote_zone) = 0; - virtual int do_put_operate(Put *put_op, const DoutPrefixProvider *dpp); - virtual int do_remove(RGWSI_MetaBackend_Handler::Op *op, std::string& entry, RGWObjVersionTracker& objv_tracker, optional_yield y, const DoutPrefixProvider *dpp) = 0; - -public: - RGWMetadataHandler_GenericMetaBE() {} - - void base_init(CephContext *_cct, - RGWSI_MetaBackend_Handler *_be_handler) { - RGWMetadataHandler::base_init(_cct); - be_handler = _be_handler; - } - - RGWSI_MetaBackend_Handler *get_be_handler() { - return be_handler; - } - - class Put { - protected: - RGWMetadataHandler_GenericMetaBE *handler; - RGWSI_MetaBackend_Handler::Op *op; - std::string& entry; - RGWMetadataObject *obj; - RGWObjVersionTracker& objv_tracker; - RGWMDLogSyncType apply_type; - optional_yield y; - bool from_remote_zone{false}; - - int get(RGWMetadataObject **obj, const DoutPrefixProvider *dpp) { - return handler->do_get(op, entry, obj, y, dpp); - } - public: - Put(RGWMetadataHandler_GenericMetaBE *_handler, RGWSI_MetaBackend_Handler::Op *_op, - std::string& _entry, RGWMetadataObject *_obj, - RGWObjVersionTracker& _objv_tracker, optional_yield _y, - RGWMDLogSyncType _type, bool from_remote_zone); - - virtual ~Put() {} - - virtual int put_pre(const DoutPrefixProvider *dpp) { - return 0; - } - virtual int put(const DoutPrefixProvider *dpp) { - return 0; - } - virtual int put_post(const DoutPrefixProvider *dpp) { - return 0; - } - virtual int finalize() { - return 0; - } - }; - - int get(std::string& entry, RGWMetadataObject **obj, optional_yield, const DoutPrefixProvider *dpp) override; - int put(std::string& entry, RGWMetadataObject *obj, RGWObjVersionTracker& objv_tracker, optional_yield, const DoutPrefixProvider *dpp, RGWMDLogSyncType type, bool from_remote_zone) override; - int remove(std::string& entry, RGWObjVersionTracker& objv_tracker, optional_yield, const DoutPrefixProvider *dpp) override; - - int mutate(const std::string& entry, - const ceph::real_time& mtime, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - RGWMDLogStatus op_type, - std::function f) override; - - int get_shard_id(const std::string& entry, int *shard_id) override; - - int list_keys_init(const DoutPrefixProvider *dpp, const std::string& marker, void **phandle) override; - int list_keys_next(const DoutPrefixProvider *dpp, void *handle, int max, std::list& keys, bool *truncated) override; - void list_keys_complete(void *handle) override; - - std::string get_marker(void *handle) override; - - /** - * Compare an incoming versus on-disk tag/version+mtime combo against - * the sync mode to see if the new one should replace the on-disk one. - * - * @return true if the update should proceed, false otherwise. - */ - static bool check_versions(bool exists, - const obj_version& ondisk, const real_time& ondisk_time, - const obj_version& incoming, const real_time& incoming_time, - RGWMDLogSyncType sync_mode) { - switch (sync_mode) { - case APPLY_UPDATES: - if ((ondisk.tag != incoming.tag) || - (ondisk.ver >= incoming.ver)) - return false; - break; - case APPLY_NEWER: - if (ondisk_time >= incoming_time) - return false; - break; - case APPLY_EXCLUSIVE: - if (exists) - return false; - break; - case APPLY_ALWAYS: //deliberate fall-thru -- we always apply! - default: break; - } - return true; - } -}; - class RGWMetadataTopHandler; class RGWMetadataManager { friend class RGWMetadataHandler; CephContext *cct; - RGWSI_Meta *meta_svc; std::map handlers; std::unique_ptr md_top_handler; @@ -232,7 +104,7 @@ class RGWMetadataManager { int register_handler(RGWMetadataHandler *handler); public: - RGWMetadataManager(RGWSI_Meta *_meta_svc); + RGWMetadataManager(); ~RGWMetadataManager(); RGWMetadataHandler *get_handler(const std::string& type); @@ -269,29 +141,6 @@ public: int get_shard_id(const std::string& section, const std::string& key, int *shard_id); }; -class RGWMetadataHandlerPut_SObj : public RGWMetadataHandler_GenericMetaBE::Put -{ -protected: - std::unique_ptr oo; - RGWMetadataObject *old_obj{nullptr}; - bool exists{false}; - -public: - RGWMetadataHandlerPut_SObj(RGWMetadataHandler_GenericMetaBE *handler, RGWSI_MetaBackend_Handler::Op *op, - std::string& entry, RGWMetadataObject *obj, RGWObjVersionTracker& objv_tracker, - optional_yield y, - RGWMDLogSyncType type, bool from_remote_zone); - ~RGWMetadataHandlerPut_SObj(); - - int put_pre(const DoutPrefixProvider *dpp) override; - int put(const DoutPrefixProvider *dpp) override; - virtual int put_check(const DoutPrefixProvider *dpp) { - return 0; - } - virtual int put_checked(const DoutPrefixProvider *dpp); - virtual void encode_obj(bufferlist *bl) {} -}; - void rgw_shard_name(const std::string& prefix, unsigned max_shards, const std::string& key, std::string& name, int *shard_id); void rgw_shard_name(const std::string& prefix, unsigned max_shards, const std::string& section, const std::string& key, std::string& name); void rgw_shard_name(const std::string& prefix, unsigned shard_id, std::string& name); diff --git a/src/rgw/driver/rados/rgw_sal_rados.cc b/src/rgw/driver/rados/rgw_sal_rados.cc index 2969eb9bd1a6d..91b3cc0264887 100644 --- a/src/rgw/driver/rados/rgw_sal_rados.cc +++ b/src/rgw/driver/rados/rgw_sal_rados.cc @@ -57,8 +57,6 @@ #include "rgw_rest_user.h" #include "services/svc_sys_obj.h" #include "services/svc_mdlog.h" -#include "services/svc_meta.h" -#include "services/svc_meta_be_sobj.h" #include "services/svc_cls.h" #include "services/svc_bilog_rados.h" #include "services/svc_bi_rados.h" @@ -572,21 +570,18 @@ int RadosBucket::load_bucket(const DoutPrefixProvider* dpp, optional_yield y) { int ret; - RGWSI_MetaBackend_CtxParams bectx_params = RGWSI_MetaBackend_CtxParams_SObj(); RGWObjVersionTracker ep_ot; if (info.bucket.bucket_id.empty()) { ret = store->ctl()->bucket->read_bucket_info(info.bucket, &info, y, dpp, RGWBucketCtl::BucketInstance::GetParams() .set_mtime(&mtime) - .set_attrs(&attrs) - .set_bectx_params(bectx_params), + .set_attrs(&attrs), &ep_ot); } else { ret = store->ctl()->bucket->read_bucket_instance_info(info.bucket, &info, y, dpp, RGWBucketCtl::BucketInstance::GetParams() .set_mtime(&mtime) - .set_attrs(&attrs) - .set_bectx_params(bectx_params)); + .set_attrs(&attrs)); } if (ret != 0) { return ret; diff --git a/src/rgw/driver/rados/rgw_service.cc b/src/rgw/driver/rados/rgw_service.cc index cc8bd3f06af05..784fefd0bcba7 100644 --- a/src/rgw/driver/rados/rgw_service.cc +++ b/src/rgw/driver/rados/rgw_service.cc @@ -11,9 +11,6 @@ #include "services/svc_cls.h" #include "services/svc_config_key_rados.h" #include "services/svc_mdlog.h" -#include "services/svc_meta.h" -#include "services/svc_meta_be.h" -#include "services/svc_meta_be_sobj.h" #include "services/svc_notify.h" #include "services/svc_zone.h" #include "services/svc_zone_utils.h" @@ -66,8 +63,6 @@ int RGWServices_Def::init(CephContext *cct, config_key_rados = std::make_unique(cct); datalog_rados = std::make_unique(cct); mdlog = std::make_unique(cct, run_sync); - meta = std::make_unique(cct); - meta_be_sobj = std::make_unique(cct); notify = std::make_unique(cct); zone = std::make_unique(cct); zone_utils = std::make_unique(cct); @@ -83,15 +78,13 @@ int RGWServices_Def::init(CephContext *cct, sysobj_cache = std::make_unique(dpp, cct); } - vector meta_bes{meta_be_sobj.get()}; - async_processor->start(); finisher->init(); bi_rados->init(zone.get(), driver->getRados()->get_rados_handle(), bilog_rados.get(), datalog_rados.get()); bilog_rados->init(bi_rados.get()); bucket_sobj->init(zone.get(), sysobj.get(), sysobj_cache.get(), - bi_rados.get(), meta.get(), mdlog.get(), + bi_rados.get(), mdlog.get(), sync_modules.get(), bucket_sync_sobj.get()); bucket_sync_sobj->init(zone.get(), sysobj.get(), @@ -101,8 +94,6 @@ int RGWServices_Def::init(CephContext *cct, config_key_rados->init(driver->getRados()->get_rados_handle()); mdlog->init(driver->getRados()->get_rados_handle(), zone.get(), sysobj.get(), cls.get(), async_processor.get()); - meta->init(sysobj.get(), mdlog.get(), meta_bes); - meta_be_sobj->init(sysobj.get(), mdlog.get()); notify->init(zone.get(), driver->getRados()->get_rados_handle(), finisher.get()); zone->init(sysobj.get(), driver->getRados()->get_rados_handle(), @@ -117,8 +108,8 @@ int RGWServices_Def::init(CephContext *cct, } else { sysobj->init(driver->getRados()->get_rados_handle(), sysobj_core.get()); } - user_rados->init(driver->getRados()->get_rados_handle(), zone.get(), mdlog.get(), - sysobj.get(), sysobj_cache.get(), meta.get()); + user_rados->init(driver->getRados()->get_rados_handle(), zone.get(), + mdlog.get(), sysobj.get(), sysobj_cache.get()); can_shutdown = true; @@ -209,18 +200,6 @@ int RGWServices_Def::init(CephContext *cct, } if (!raw) { - r = meta_be_sobj->start(y, dpp); - if (r < 0) { - ldpp_dout(dpp, 0) << "ERROR: failed to start meta_be_sobj service (" << cpp_strerror(-r) << dendl; - return r; - } - - r = meta->start(y, dpp); - if (r < 0) { - ldpp_dout(dpp, 0) << "ERROR: failed to start meta service (" << cpp_strerror(-r) << dendl; - return r; - } - r = bucket_sobj->start(y, dpp); if (r < 0) { ldpp_dout(dpp, 0) << "ERROR: failed to start bucket service (" << cpp_strerror(-r) << dendl; @@ -259,8 +238,6 @@ void RGWServices_Def::shutdown() user_rados->shutdown(); sync_modules->shutdown(); notify->shutdown(); - meta_be_sobj->shutdown(); - meta->shutdown(); mdlog->shutdown(); config_key_rados->shutdown(); cls->shutdown(); @@ -307,8 +284,6 @@ int RGWServices::do_init(CephContext *_cct, rgw::sal::RadosStore* driver, bool h config_key = config_key_rados; datalog_rados = _svc.datalog_rados.get(); mdlog = _svc.mdlog.get(); - meta = _svc.meta.get(); - meta_be_sobj = _svc.meta_be_sobj.get(); notify = _svc.notify.get(); zone = _svc.zone.get(); zone_utils = _svc.zone_utils.get(); @@ -353,7 +328,7 @@ RGWCtlDef::_meta::~_meta() {} int RGWCtlDef::init(RGWServices& svc, rgw::sal::Driver* driver, librados::Rados& rados, const DoutPrefixProvider *dpp) { - meta.mgr.reset(new RGWMetadataManager(svc.meta)); + meta.mgr.reset(new RGWMetadataManager()); meta.user = create_user_metadata_handler(svc.user); diff --git a/src/rgw/driver/rados/rgw_service.h b/src/rgw/driver/rados/rgw_service.h index e2b53c9cd9257..202f40d20b31e 100644 --- a/src/rgw/driver/rados/rgw_service.h +++ b/src/rgw/driver/rados/rgw_service.h @@ -62,10 +62,6 @@ class RGWSI_Cls; class RGWSI_ConfigKey; class RGWSI_ConfigKey_RADOS; class RGWSI_MDLog; -class RGWSI_Meta; -class RGWSI_MetaBackend; -class RGWSI_MetaBackend_SObj; -class RGWSI_MetaBackend_OTP; class RGWSI_Notify; class RGWSI_OTP; class RGWSI_Zone; @@ -93,8 +89,6 @@ struct RGWServices_Def std::unique_ptr cls; std::unique_ptr config_key_rados; std::unique_ptr mdlog; - std::unique_ptr meta; - std::unique_ptr meta_be_sobj; std::unique_ptr notify; std::unique_ptr zone; std::unique_ptr zone_utils; @@ -138,8 +132,6 @@ struct RGWServices RGWSI_ConfigKey *config_key{nullptr}; RGWDataChangesLog *datalog_rados{nullptr}; RGWSI_MDLog *mdlog{nullptr}; - RGWSI_Meta *meta{nullptr}; - RGWSI_MetaBackend *meta_be_sobj{nullptr}; RGWSI_Notify *notify{nullptr}; RGWSI_Zone *zone{nullptr}; RGWSI_ZoneUtils *zone_utils{nullptr}; diff --git a/src/rgw/driver/rados/rgw_trim_bilog.cc b/src/rgw/driver/rados/rgw_trim_bilog.cc index db9980470055e..d9960289a8519 100644 --- a/src/rgw/driver/rados/rgw_trim_bilog.cc +++ b/src/rgw/driver/rados/rgw_trim_bilog.cc @@ -33,7 +33,6 @@ #include "rgw_bucket.h" #include "services/svc_zone.h" -#include "services/svc_meta.h" #include "services/svc_bilog_rados.h" #include diff --git a/src/rgw/driver/rados/rgw_trim_mdlog.cc b/src/rgw/driver/rados/rgw_trim_mdlog.cc index be513b6e74df1..26b458c406960 100644 --- a/src/rgw/driver/rados/rgw_trim_mdlog.cc +++ b/src/rgw/driver/rados/rgw_trim_mdlog.cc @@ -9,7 +9,6 @@ #include "rgw_cr_rest.h" #include "rgw_zone.h" #include "services/svc_zone.h" -#include "services/svc_meta.h" #include "services/svc_mdlog.h" #include "services/svc_cls.h" diff --git a/src/rgw/driver/rados/rgw_user.cc b/src/rgw/driver/rados/rgw_user.cc index d26495d9b0f3f..94a18ffcbab75 100644 --- a/src/rgw/driver/rados/rgw_user.cc +++ b/src/rgw/driver/rados/rgw_user.cc @@ -13,7 +13,6 @@ #include "rgw_rest_iam.h" // validate_iam_user_name() #include "services/svc_user.h" -#include "services/svc_meta.h" #define dout_subsys ceph_subsys_rgw diff --git a/src/rgw/rgw_mdlog.h b/src/rgw/rgw_mdlog.h index 6c78fd3840858..4817dded9dbec 100644 --- a/src/rgw/rgw_mdlog.h +++ b/src/rgw/rgw_mdlog.h @@ -26,6 +26,9 @@ #define META_LOG_OBJ_PREFIX "meta.log." +class RGWSI_Cls; +class RGWSI_Zone; + struct RGWMetadataLogInfo { std::string marker; real_time last_update; diff --git a/src/rgw/rgw_metadata.cc b/src/rgw/rgw_metadata.cc index a6d75de0eba12..92b03e41bcdc1 100644 --- a/src/rgw/rgw_metadata.cc +++ b/src/rgw/rgw_metadata.cc @@ -5,10 +5,6 @@ #include "rgw_mdlog.h" - -#include "services/svc_meta.h" -#include "services/svc_meta_be_sobj.h" - #define dout_subsys ceph_subsys_rgw using namespace std; @@ -111,214 +107,16 @@ void RGWMetadataLogData::generate_test_instances(std::list l.back()->status = MDLOG_STATUS_WRITE; } -RGWMetadataHandler_GenericMetaBE::Put::Put(RGWMetadataHandler_GenericMetaBE *_handler, - RGWSI_MetaBackend_Handler::Op *_op, - string& _entry, RGWMetadataObject *_obj, - RGWObjVersionTracker& _objv_tracker, - optional_yield _y, - RGWMDLogSyncType _type, bool _from_remote_zone): - handler(_handler), op(_op), - entry(_entry), obj(_obj), - objv_tracker(_objv_tracker), - apply_type(_type), - y(_y), - from_remote_zone(_from_remote_zone) -{ -} - -int RGWMetadataHandler_GenericMetaBE::do_put_operate(Put *put_op, const DoutPrefixProvider *dpp) -{ - int r = put_op->put_pre(dpp); - if (r != 0) { /* r can also be STATUS_NO_APPLY */ - return r; - } - - r = put_op->put(dpp); - if (r != 0) { - return r; - } - - r = put_op->put_post(dpp); - if (r != 0) { /* e.g., -error or STATUS_APPLIED */ - return r; - } - - return 0; -} - -int RGWMetadataHandler_GenericMetaBE::get(string& entry, RGWMetadataObject **obj, optional_yield y, const DoutPrefixProvider *dpp) -{ - return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) { - return do_get(op, entry, obj, y, dpp); - }); -} - -int RGWMetadataHandler_GenericMetaBE::put(string& entry, RGWMetadataObject *obj, RGWObjVersionTracker& objv_tracker, - optional_yield y, const DoutPrefixProvider *dpp, RGWMDLogSyncType type, bool from_remote_zone) -{ - return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) { - return do_put(op, entry, obj, objv_tracker, y, dpp, type, from_remote_zone); - }); -} - -int RGWMetadataHandler_GenericMetaBE::remove(string& entry, RGWObjVersionTracker& objv_tracker, optional_yield y, const DoutPrefixProvider *dpp) -{ - return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) { - return do_remove(op, entry, objv_tracker, y, dpp); - }); -} - -int RGWMetadataHandler_GenericMetaBE::mutate(const string& entry, - const ceph::real_time& mtime, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - RGWMDLogStatus op_type, - std::function f) -{ - return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) { - RGWSI_MetaBackend::MutateParams params(mtime, op_type); - return op->mutate(entry, - params, - objv_tracker, - y, - f, - dpp); - }); -} - -int RGWMetadataHandler_GenericMetaBE::get_shard_id(const string& entry, int *shard_id) -{ - return be_handler->call([&](RGWSI_MetaBackend_Handler::Op *op) { - return op->get_shard_id(entry, shard_id); - }); -} - -int RGWMetadataHandler_GenericMetaBE::list_keys_init(const DoutPrefixProvider *dpp, const string& marker, void **phandle) -{ - auto op = std::make_unique(be_handler); - - int ret = op->list_init(dpp, marker); - if (ret < 0) { - return ret; - } - - *phandle = (void *)op.release(); - - return 0; -} - -int RGWMetadataHandler_GenericMetaBE::list_keys_next(const DoutPrefixProvider *dpp, void *handle, int max, list& keys, bool *truncated) -{ - auto op = static_cast(handle); - - int ret = op->list_next(dpp, max, &keys, truncated); - if (ret < 0 && ret != -ENOENT) { - return ret; - } - if (ret == -ENOENT) { - if (truncated) { - *truncated = false; - } - return 0; - } - - return 0; -} - -void RGWMetadataHandler_GenericMetaBE::list_keys_complete(void *handle) -{ - auto op = static_cast(handle); - delete op; -} - -string RGWMetadataHandler_GenericMetaBE::get_marker(void *handle) -{ - auto op = static_cast(handle); - string marker; - int r = op->list_get_marker(&marker); - if (r < 0) { - ldout(cct, 0) << "ERROR: " << __func__ << "(): list_get_marker() returned: r=" << r << dendl; - /* not much else to do */ - } - - return marker; -} - -RGWMetadataHandlerPut_SObj::RGWMetadataHandlerPut_SObj(RGWMetadataHandler_GenericMetaBE *handler, - RGWSI_MetaBackend_Handler::Op *op, - string& entry, RGWMetadataObject *obj, RGWObjVersionTracker& objv_tracker, - optional_yield y, - RGWMDLogSyncType type, bool from_remote_zone) : Put(handler, op, entry, obj, objv_tracker, y, type, from_remote_zone) { -} - -int RGWMetadataHandlerPut_SObj::put_pre(const DoutPrefixProvider *dpp) -{ - int ret = get(&old_obj, dpp); - if (ret < 0 && ret != -ENOENT) { - return ret; - } - exists = (ret != -ENOENT); - - oo.reset(old_obj); - - auto old_ver = (!old_obj ? obj_version() : old_obj->get_version()); - auto old_mtime = (!old_obj ? ceph::real_time() : old_obj->get_mtime()); - - // are we actually going to perform this put, or is it too old? - if (!handler->check_versions(exists, old_ver, old_mtime, - objv_tracker.write_version, obj->get_mtime(), - apply_type)) { - return STATUS_NO_APPLY; - } - - objv_tracker.read_version = old_ver; /* maintain the obj version we just read */ - - return 0; -} - -int RGWMetadataHandlerPut_SObj::put(const DoutPrefixProvider *dpp) -{ - int ret = put_check(dpp); - if (ret != 0) { - return ret; - } - - return put_checked(dpp); -} - -int RGWMetadataHandlerPut_SObj::put_checked(const DoutPrefixProvider *dpp) -{ - RGWSI_MBSObj_PutParams params(obj->get_pattrs(), obj->get_mtime()); - - encode_obj(¶ms.bl); - - int ret = op->put(entry, params, &objv_tracker, y, dpp); - if (ret < 0) { - return ret; - } - - return 0; -} - class RGWMetadataTopHandler : public RGWMetadataHandler { struct iter_data { set sections; set::iterator iter; }; - struct Svc { - RGWSI_Meta *meta{nullptr}; - } svc; - RGWMetadataManager *mgr; public: - RGWMetadataTopHandler(RGWSI_Meta *meta_svc, - RGWMetadataManager *_mgr) : mgr(_mgr) { - base_init(meta_svc->ctx()); - svc.meta = meta_svc; - } + explicit RGWMetadataTopHandler(RGWMetadataManager *_mgr) : mgr(_mgr) {} string get_type() override { return string(); } @@ -389,8 +187,6 @@ public: } }; -RGWMetadataHandlerPut_SObj::~RGWMetadataHandlerPut_SObj() {} - int RGWMetadataHandler::attach(RGWMetadataManager *manager) { return manager->register_handler(this); @@ -403,10 +199,9 @@ obj_version& RGWMetadataObject::get_version() return objv; } -RGWMetadataManager::RGWMetadataManager(RGWSI_Meta *_meta_svc) - : cct(_meta_svc->ctx()), meta_svc(_meta_svc) +RGWMetadataManager::RGWMetadataManager() { - md_top_handler.reset(new RGWMetadataTopHandler(meta_svc, this)); + md_top_handler.reset(new RGWMetadataTopHandler(this)); } RGWMetadataManager::~RGWMetadataManager() @@ -679,7 +474,6 @@ void RGWMetadataManager::dump_log_entry(cls_log_entry& entry, Formatter *f) encode_json("data", log_data, f); } catch (buffer::error& err) { - lderr(cct) << "failed to decode log entry: " << entry.section << ":" << entry.name<< " ts=" << entry.timestamp << dendl; } f->close_section(); } diff --git a/src/rgw/rgw_quota.cc b/src/rgw/rgw_quota.cc index f55064ff53ffc..063557c8e7e49 100644 --- a/src/rgw/rgw_quota.cc +++ b/src/rgw/rgw_quota.cc @@ -29,7 +29,6 @@ #include "rgw_user.h" #include "services/svc_sys_obj.h" -#include "services/svc_meta.h" #include diff --git a/src/rgw/rgw_role.cc b/src/rgw/rgw_role.cc index 24c45afbe5771..9a93a10f8c4ba 100644 --- a/src/rgw/rgw_role.cc +++ b/src/rgw/rgw_role.cc @@ -24,8 +24,6 @@ #include "services/svc_zone.h" #include "services/svc_sys_obj.h" -#include "services/svc_meta_be_sobj.h" -#include "services/svc_meta.h" #define dout_subsys ceph_subsys_rgw diff --git a/src/rgw/services/svc_bucket_sobj.cc b/src/rgw/services/svc_bucket_sobj.cc index beb767717c7fe..ca705c5a44d02 100644 --- a/src/rgw/services/svc_bucket_sobj.cc +++ b/src/rgw/services/svc_bucket_sobj.cc @@ -7,8 +7,6 @@ #include "svc_sys_obj.h" #include "svc_sys_obj_cache.h" #include "svc_bi.h" -#include "svc_meta.h" -#include "svc_meta_be_sobj.h" #include "svc_mdlog.h" #include "svc_sync_modules.h" @@ -72,7 +70,7 @@ RGWSI_Bucket_SObj::~RGWSI_Bucket_SObj() { void RGWSI_Bucket_SObj::init(RGWSI_Zone *_zone_svc, RGWSI_SysObj *_sysobj_svc, RGWSI_SysObj_Cache *_cache_svc, RGWSI_BucketIndex *_bi, - RGWSI_Meta *_meta_svc, RGWSI_MDLog* mdlog_svc, + RGWSI_MDLog* mdlog_svc, RGWSI_SyncModules *_sync_modules_svc, RGWSI_Bucket_Sync *_bucket_sync_svc) { @@ -81,7 +79,6 @@ void RGWSI_Bucket_SObj::init(RGWSI_Zone *_zone_svc, RGWSI_SysObj *_sysobj_svc, svc.sysobj = _sysobj_svc; svc.cache = _cache_svc; svc.bi = _bi; - svc.meta = _meta_svc; svc.mdlog = mdlog_svc; svc.sync_modules = _sync_modules_svc; svc.bucket_sync = _bucket_sync_svc; diff --git a/src/rgw/services/svc_bucket_sobj.h b/src/rgw/services/svc_bucket_sobj.h index 6028222ed25eb..f245417d1686c 100644 --- a/src/rgw/services/svc_bucket_sobj.h +++ b/src/rgw/services/svc_bucket_sobj.h @@ -25,7 +25,6 @@ class RGWSI_Zone; class RGWSI_SysObj; class RGWSI_SysObj_Cache; -class RGWSI_Meta; class RGWSI_MDLog; class RGWSI_SyncModules; @@ -68,7 +67,6 @@ public: RGWSI_Zone *zone{nullptr}; RGWSI_SysObj *sysobj{nullptr}; RGWSI_SysObj_Cache *cache{nullptr}; - RGWSI_Meta *meta{nullptr}; RGWSI_MDLog *mdlog{nullptr}; RGWSI_SyncModules *sync_modules{nullptr}; RGWSI_Bucket_Sync *bucket_sync{nullptr}; @@ -81,7 +79,6 @@ public: RGWSI_SysObj *_sysobj_svc, RGWSI_SysObj_Cache *_cache_svc, RGWSI_BucketIndex *_bi, - RGWSI_Meta *_meta_svc, RGWSI_MDLog *mdlog_svc, RGWSI_SyncModules *_sync_modules_svc, RGWSI_Bucket_Sync *_bucket_sync_svc); diff --git a/src/rgw/services/svc_bucket_sync_sobj.h b/src/rgw/services/svc_bucket_sync_sobj.h index bf7f3e527390c..e4ebccbaad27e 100644 --- a/src/rgw/services/svc_bucket_sync_sobj.h +++ b/src/rgw/services/svc_bucket_sync_sobj.h @@ -19,7 +19,6 @@ #include "rgw_service.h" -#include "svc_meta_be.h" #include "svc_bucket_sync.h" class RGWSI_Zone; diff --git a/src/rgw/services/svc_mdlog.h b/src/rgw/services/svc_mdlog.h index c8d40b1387428..c627b46af1d44 100644 --- a/src/rgw/services/svc_mdlog.h +++ b/src/rgw/services/svc_mdlog.h @@ -20,8 +20,6 @@ #include "rgw_period_history.h" #include "rgw_period_puller.h" -#include "svc_meta_be.h" - class RGWMetadataLog; class RGWMetadataLogHistory; diff --git a/src/rgw/services/svc_meta.cc b/src/rgw/services/svc_meta.cc deleted file mode 100644 index 735c39f85e89b..0000000000000 --- a/src/rgw/services/svc_meta.cc +++ /dev/null @@ -1,46 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - - -#include "svc_meta.h" - -#include "rgw_metadata.h" - -#define dout_subsys ceph_subsys_rgw - -using namespace std; - -RGWSI_Meta::RGWSI_Meta(CephContext *cct) : RGWServiceInstance(cct) { -} - -RGWSI_Meta::~RGWSI_Meta() {} - -void RGWSI_Meta::init(RGWSI_SysObj *_sysobj_svc, - RGWSI_MDLog *_mdlog_svc, - vector& _be_svc) -{ - sysobj_svc = _sysobj_svc; - mdlog_svc = _mdlog_svc; - - for (auto& be : _be_svc) { - be_svc[be->get_type()] = be; - } -} - -int RGWSI_Meta::create_be_handler(RGWSI_MetaBackend::Type be_type, - RGWSI_MetaBackend_Handler **phandler) -{ - auto iter = be_svc.find(be_type); - if (iter == be_svc.end()) { - ldout(cct, 0) << __func__ << "(): ERROR: backend type not found" << dendl; - return -EINVAL; - } - - auto handler = iter->second->alloc_be_handler(); - - be_handlers.emplace_back(handler); - *phandler = handler; - - return 0; -} - diff --git a/src/rgw/services/svc_meta.h b/src/rgw/services/svc_meta.h deleted file mode 100644 index b398e27fd26aa..0000000000000 --- a/src/rgw/services/svc_meta.h +++ /dev/null @@ -1,48 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2019 Red Hat, Inc. - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - - -#pragma once - -#include "svc_meta_be.h" - -#include "rgw_service.h" - - -class RGWMetadataLog; -class RGWCoroutine; - - -class RGWSI_Meta : public RGWServiceInstance -{ - RGWSI_SysObj *sysobj_svc{nullptr}; - RGWSI_MDLog *mdlog_svc{nullptr}; - - std::map be_svc; - - std::vector > be_handlers; - -public: - RGWSI_Meta(CephContext *cct); - ~RGWSI_Meta(); - - void init(RGWSI_SysObj *_sysobj_svc, - RGWSI_MDLog *_mdlog_svc, - std::vector& _be_svc); - - int create_be_handler(RGWSI_MetaBackend::Type be_type, - RGWSI_MetaBackend_Handler **phandler); -}; - diff --git a/src/rgw/services/svc_meta_be.cc b/src/rgw/services/svc_meta_be.cc deleted file mode 100644 index 2cb0365c84463..0000000000000 --- a/src/rgw/services/svc_meta_be.cc +++ /dev/null @@ -1,193 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - - -#include "svc_meta_be.h" - -#include "rgw_mdlog.h" - -#define dout_subsys ceph_subsys_rgw - -using namespace std; - -RGWSI_MetaBackend::Context::~Context() {} // needed, even though destructor is pure virtual -RGWSI_MetaBackend::Module::~Module() {} // ditto -RGWSI_MetaBackend::PutParams::~PutParams() {} // ... -RGWSI_MetaBackend::GetParams::~GetParams() {} // ... -RGWSI_MetaBackend::RemoveParams::~RemoveParams() {} // ... - -int RGWSI_MetaBackend::pre_modify(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y) -{ - /* if write version has not been set, and there's a read version, set it so that we can - * log it - */ - if (objv_tracker && - objv_tracker->read_version.ver && !objv_tracker->write_version.ver) { - objv_tracker->write_version = objv_tracker->read_version; - objv_tracker->write_version.ver++; - } - - return 0; -} - -int RGWSI_MetaBackend::post_modify(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, int ret, - optional_yield y) -{ - return ret; -} - -int RGWSI_MetaBackend::prepare_mutate(RGWSI_MetaBackend::Context *ctx, - const string& key, - const real_time& mtime, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp) -{ - real_time orig_mtime; - - int ret = call_with_get_params(&orig_mtime, [&](GetParams& params) { - return get_entry(ctx, key, params, objv_tracker, y, dpp); - }); - if (ret < 0 && ret != -ENOENT) { - return ret; - } - - if (objv_tracker->write_version.tag.empty()) { - if (objv_tracker->read_version.tag.empty()) { - objv_tracker->generate_new_write_ver(cct); - } else { - objv_tracker->write_version = objv_tracker->read_version; - objv_tracker->write_version.ver++; - } - } - return 0; -} - -int RGWSI_MetaBackend::do_mutate(RGWSI_MetaBackend::Context *ctx, - const string& key, - const ceph::real_time& mtime, - RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y, - std::function f, - bool generic_prepare, - const DoutPrefixProvider *dpp) -{ - int ret; - - if (generic_prepare) { - ret = prepare_mutate(ctx, key, mtime, objv_tracker, y, dpp); - if (ret < 0 || - ret == STATUS_NO_APPLY) { - return ret; - } - } - - RGWMetadataLogData log_data; - ret = pre_modify(dpp, ctx, key, log_data, objv_tracker, op_type, y); - if (ret < 0) { - return ret; - } - - ret = f(); - - /* cascading ret into post_modify() */ - - ret = post_modify(dpp, ctx, key, log_data, objv_tracker, ret, y); - if (ret < 0) - return ret; - - return 0; -} - -int RGWSI_MetaBackend::get(Context *ctx, - const string& key, - GetParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - bool get_raw_attrs) -{ - return get_entry(ctx, key, params, objv_tracker, y, dpp, get_raw_attrs); -} - -int RGWSI_MetaBackend::put(Context *ctx, - const string& key, - PutParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp) -{ - std::function f = [&]() { - return put_entry(dpp, ctx, key, params, objv_tracker, y); - }; - - return do_mutate(ctx, key, params.mtime, objv_tracker, - MDLOG_STATUS_WRITE, - y, - f, - false, - dpp); -} - -int RGWSI_MetaBackend::remove(Context *ctx, - const string& key, - RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp) -{ - std::function f = [&]() { - return remove_entry(dpp, ctx, key, params, objv_tracker, y); - }; - - return do_mutate(ctx, key, params.mtime, objv_tracker, - MDLOG_STATUS_REMOVE, - y, - f, - false, - dpp); -} - -int RGWSI_MetaBackend::mutate(Context *ctx, - const std::string& key, - MutateParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - std::function f, - const DoutPrefixProvider *dpp) -{ - return do_mutate(ctx, key, params.mtime, objv_tracker, - params.op_type, y, - f, - false, - dpp); -} - -int RGWSI_MetaBackend_Handler::call(std::optional bectx_params, - std::function f) -{ - return be->call(bectx_params, [&](RGWSI_MetaBackend::Context *ctx) { - ctx->init(this); - Op op(be, ctx); - return f(&op); - }); -} - -RGWSI_MetaBackend_Handler::Op_ManagedCtx::Op_ManagedCtx(RGWSI_MetaBackend_Handler *handler) : Op(handler->be, handler->be->alloc_ctx()) -{ - auto c = ctx(); - c->init(handler); - pctx.reset(c); -} - diff --git a/src/rgw/services/svc_meta_be.h b/src/rgw/services/svc_meta_be.h deleted file mode 100644 index 38de72121b1bb..0000000000000 --- a/src/rgw/services/svc_meta_be.h +++ /dev/null @@ -1,294 +0,0 @@ - -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2019 Red Hat, Inc. - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - - -#pragma once - -#include "svc_meta_be_params.h" - -#include "rgw_mdlog_types.h" - -#include "driver/rados/rgw_service.h" // FIXME: subclass dependency - -class RGWMetadataLogData; - -class RGWSI_MDLog; -class RGWSI_Meta; -class RGWObjVersionTracker; -class RGWSI_MetaBackend_Handler; - -class RGWSI_MetaBackend : public RGWServiceInstance -{ - friend class RGWSI_Meta; -public: - class Module; - class Context; -protected: - RGWSI_MDLog *mdlog_svc{nullptr}; - - void base_init(RGWSI_MDLog *_mdlog_svc) { - mdlog_svc = _mdlog_svc; - } - - int prepare_mutate(RGWSI_MetaBackend::Context *ctx, - const std::string& key, - const ceph::real_time& mtime, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp); - - virtual int do_mutate(Context *ctx, - const std::string& key, - const ceph::real_time& mtime, RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y, - std::function f, - bool generic_prepare, - const DoutPrefixProvider *dpp); - - virtual int pre_modify(const DoutPrefixProvider *dpp, - Context *ctx, - const std::string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y); - virtual int post_modify(const DoutPrefixProvider *dpp, - Context *ctx, - const std::string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, int ret, - optional_yield y); -public: - class Module { - /* - * Backend specialization module - */ - public: - virtual ~Module() = 0; - }; - - using ModuleRef = std::shared_ptr; - - struct Context { /* - * A single metadata operation context. Will be holding info about - * backend and operation itself; operation might span multiple backend - * calls. - */ - virtual ~Context() = 0; - - virtual void init(RGWSI_MetaBackend_Handler *h) = 0; - }; - - virtual Context *alloc_ctx() = 0; - - struct PutParams { - ceph::real_time mtime; - - PutParams() {} - PutParams(const ceph::real_time& _mtime) : mtime(_mtime) {} - virtual ~PutParams() = 0; - }; - - struct GetParams { - GetParams() {} - GetParams(ceph::real_time *_pmtime) : pmtime(_pmtime) {} - virtual ~GetParams(); - - ceph::real_time *pmtime{nullptr}; - }; - - struct RemoveParams { - virtual ~RemoveParams() = 0; - - ceph::real_time mtime; - }; - - struct MutateParams { - ceph::real_time mtime; - RGWMDLogStatus op_type; - - MutateParams() {} - MutateParams(const ceph::real_time& _mtime, - RGWMDLogStatus _op_type) : mtime(_mtime), op_type(_op_type) {} - virtual ~MutateParams() {} - }; - - enum Type { - MDBE_SOBJ = 0, - }; - - RGWSI_MetaBackend(CephContext *cct) : RGWServiceInstance(cct) {} - virtual ~RGWSI_MetaBackend() {} - - virtual Type get_type() = 0; - - virtual RGWSI_MetaBackend_Handler *alloc_be_handler() = 0; - virtual int call_with_get_params(ceph::real_time *pmtime, std::function) = 0; - - /* these should be implemented by backends */ - virtual int get_entry(RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWSI_MetaBackend::GetParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - bool get_raw_attrs=false) = 0; - virtual int put_entry(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWSI_MetaBackend::PutParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) = 0; - virtual int remove_entry(const DoutPrefixProvider *dpp, - Context *ctx, - const std::string& key, - RGWSI_MetaBackend::RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) = 0; - - virtual int list_init(const DoutPrefixProvider *dpp, RGWSI_MetaBackend::Context *ctx, const std::string& marker) = 0; - virtual int list_next(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - int max, std::list *keys, - bool *truncated) = 0; - virtual int list_get_marker(RGWSI_MetaBackend::Context *ctx, - std::string *marker) = 0; - - int call(std::function f) { - return call(std::nullopt, f); - } - - virtual int call(std::optional opt, - std::function f) = 0; - - virtual int get_shard_id(RGWSI_MetaBackend::Context *ctx, - const std::string& key, - int *shard_id) = 0; - - /* higher level */ - virtual int get(Context *ctx, - const std::string& key, - GetParams ¶ms, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - bool get_raw_attrs=false); - - virtual int put(Context *ctx, - const std::string& key, - PutParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp); - - virtual int remove(Context *ctx, - const std::string& key, - RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp); - - virtual int mutate(Context *ctx, - const std::string& key, - MutateParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - std::function f, - const DoutPrefixProvider *dpp); -}; - -class RGWSI_MetaBackend_Handler { - RGWSI_MetaBackend *be{nullptr}; - -public: - class Op { - friend class RGWSI_MetaBackend_Handler; - - RGWSI_MetaBackend *be; - RGWSI_MetaBackend::Context *be_ctx; - - Op(RGWSI_MetaBackend *_be, - RGWSI_MetaBackend::Context *_ctx) : be(_be), be_ctx(_ctx) {} - - public: - RGWSI_MetaBackend::Context *ctx() { - return be_ctx; - } - - int get(const std::string& key, - RGWSI_MetaBackend::GetParams ¶ms, - RGWObjVersionTracker *objv_tracker, - optional_yield y, const DoutPrefixProvider *dpp) { - return be->get(be_ctx, key, params, objv_tracker, y, dpp); - } - - int put(const std::string& key, - RGWSI_MetaBackend::PutParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, const DoutPrefixProvider *dpp) { - return be->put(be_ctx, key, params, objv_tracker, y, dpp); - } - - int remove(const std::string& key, - RGWSI_MetaBackend::RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, const DoutPrefixProvider *dpp) { - return be->remove(be_ctx, key, params, objv_tracker, y, dpp); - } - - int mutate(const std::string& key, - RGWSI_MetaBackend::MutateParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - std::function f, - const DoutPrefixProvider *dpp) { - return be->mutate(be_ctx, key, params, objv_tracker, y, f, dpp); - } - - int list_init(const DoutPrefixProvider *dpp, const std::string& marker) { - return be->list_init(dpp, be_ctx, marker); - } - int list_next(const DoutPrefixProvider *dpp, int max, std::list *keys, - bool *truncated) { - return be->list_next(dpp, be_ctx, max, keys, truncated); - } - int list_get_marker(std::string *marker) { - return be->list_get_marker(be_ctx, marker); - } - - int get_shard_id(const std::string& key, int *shard_id) { - return be->get_shard_id(be_ctx, key, shard_id); - } - }; - - class Op_ManagedCtx : public Op { - std::unique_ptr pctx; - public: - Op_ManagedCtx(RGWSI_MetaBackend_Handler *handler); - }; - - RGWSI_MetaBackend_Handler(RGWSI_MetaBackend *_be) : be(_be) {} - virtual ~RGWSI_MetaBackend_Handler() {} - - int call(std::function f) { - return call(std::nullopt, f); - } - - virtual int call(std::optional bectx_params, - std::function f); -}; - diff --git a/src/rgw/services/svc_meta_be_params.h b/src/rgw/services/svc_meta_be_params.h deleted file mode 100644 index 445f6e18819d2..0000000000000 --- a/src/rgw/services/svc_meta_be_params.h +++ /dev/null @@ -1,25 +0,0 @@ - - -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2019 Red Hat, Inc. - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - - -#pragma once - -#include - -struct RGWSI_MetaBackend_CtxParams_SObj {}; - -using RGWSI_MetaBackend_CtxParams = std::variant; diff --git a/src/rgw/services/svc_meta_be_sobj.cc b/src/rgw/services/svc_meta_be_sobj.cc deleted file mode 100644 index 45410c182384b..0000000000000 --- a/src/rgw/services/svc_meta_be_sobj.cc +++ /dev/null @@ -1,246 +0,0 @@ -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -#include "svc_meta_be_sobj.h" -#include "svc_meta_be_params.h" -#include "svc_mdlog.h" - -#include "rgw_tools.h" -#include "rgw_metadata.h" -#include "rgw_mdlog.h" - -#define dout_subsys ceph_subsys_rgw - -using namespace std; - -RGWSI_MetaBackend_SObj::RGWSI_MetaBackend_SObj(CephContext *cct) : RGWSI_MetaBackend(cct) { -} - -RGWSI_MetaBackend_SObj::~RGWSI_MetaBackend_SObj() { -} - -RGWSI_MetaBackend_Handler *RGWSI_MetaBackend_SObj::alloc_be_handler() -{ - return new RGWSI_MetaBackend_Handler_SObj(this); -} - -RGWSI_MetaBackend::Context *RGWSI_MetaBackend_SObj::alloc_ctx() -{ - return new Context_SObj; -} - -int RGWSI_MetaBackend_SObj::pre_modify(const DoutPrefixProvider *dpp, RGWSI_MetaBackend::Context *_ctx, - const string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y) -{ - auto ctx = static_cast(_ctx); - int ret = RGWSI_MetaBackend::pre_modify(dpp, ctx, key, log_data, - objv_tracker, op_type, - y); - if (ret < 0) { - return ret; - } - - /* if write version has not been set, and there's a read version, set it so that we can - * log it - */ - if (objv_tracker) { - log_data.read_version = objv_tracker->read_version; - log_data.write_version = objv_tracker->write_version; - } - - log_data.status = op_type; - - bufferlist logbl; - encode(log_data, logbl); - - ret = mdlog_svc->add_entry(dpp, ctx->module->get_hash_key(key), ctx->module->get_section(), key, logbl, y); - if (ret < 0) - return ret; - - return 0; -} - -int RGWSI_MetaBackend_SObj::post_modify(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - const string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, int ret, - optional_yield y) -{ - auto ctx = static_cast(_ctx); - if (ret >= 0) - log_data.status = MDLOG_STATUS_COMPLETE; - else - log_data.status = MDLOG_STATUS_ABORT; - - bufferlist logbl; - encode(log_data, logbl); - - int r = mdlog_svc->add_entry(dpp, ctx->module->get_hash_key(key), ctx->module->get_section(), key, logbl, y); - if (ret < 0) - return ret; - - if (r < 0) - return r; - - return RGWSI_MetaBackend::post_modify(dpp, ctx, key, log_data, objv_tracker, ret, y); -} - -int RGWSI_MetaBackend_SObj::get_shard_id(RGWSI_MetaBackend::Context *_ctx, - const std::string& key, - int *shard_id) -{ - auto ctx = static_cast(_ctx); - *shard_id = mdlog_svc->get_shard_id(ctx->module->get_hash_key(key), shard_id); - return 0; -} - -int RGWSI_MetaBackend_SObj::call(std::optional opt, - std::function f) -{ - RGWSI_MetaBackend_SObj::Context_SObj ctx; - return f(&ctx); -} - -void RGWSI_MetaBackend_SObj::Context_SObj::init(RGWSI_MetaBackend_Handler *h) -{ - RGWSI_MetaBackend_Handler_SObj *handler = static_cast(h); - module = handler->module; -} - -int RGWSI_MetaBackend_SObj::call_with_get_params(ceph::real_time *pmtime, std::function cb) -{ - bufferlist bl; - RGWSI_MBSObj_GetParams params; - params.pmtime = pmtime; - params.pbl = &bl; - return cb(params); -} - -int RGWSI_MetaBackend_SObj::get_entry(RGWSI_MetaBackend::Context *_ctx, - const string& key, - GetParams& _params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - bool get_raw_attrs) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - RGWSI_MBSObj_GetParams& params = static_cast(_params); - - rgw_pool pool; - string oid; - ctx->module->get_pool_and_oid(key, &pool, &oid); - - int ret = 0; - ret = rgw_get_system_obj(sysobj_svc, pool, oid, *params.pbl, - objv_tracker, params.pmtime, - y, dpp, - params.pattrs, params.cache_info, - params.refresh_version, get_raw_attrs); - - return ret; -} - -int RGWSI_MetaBackend_SObj::put_entry(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - const string& key, - PutParams& _params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - RGWSI_MBSObj_PutParams& params = static_cast(_params); - - rgw_pool pool; - string oid; - ctx->module->get_pool_and_oid(key, &pool, &oid); - - return rgw_put_system_obj(dpp, sysobj_svc, pool, oid, params.bl, params.exclusive, - objv_tracker, params.mtime, y, params.pattrs); -} - -int RGWSI_MetaBackend_SObj::remove_entry(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - const string& key, - RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - - rgw_pool pool; - string oid; - ctx->module->get_pool_and_oid(key, &pool, &oid); - rgw_raw_obj k(pool, oid); - - auto sysobj = sysobj_svc->get_obj(k); - return sysobj.wop() - .set_objv_tracker(objv_tracker) - .remove(dpp, y); -} - -int RGWSI_MetaBackend_SObj::list_init(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - const string& marker) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - - rgw_pool pool; - - string no_key; - ctx->module->get_pool_and_oid(no_key, &pool, nullptr); - - ctx->list.pool = sysobj_svc->get_pool(pool); - ctx->list.op.emplace(ctx->list.pool->op()); - - string prefix = ctx->module->get_oid_prefix(); - ctx->list.op->init(dpp, marker, prefix); - - return 0; -} - -int RGWSI_MetaBackend_SObj::list_next(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - int max, list *keys, - bool *truncated) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - - vector oids; - - keys->clear(); - - int ret = ctx->list.op->get_next(dpp, max, &oids, truncated); - if (ret < 0 && ret != -ENOENT) - return ret; - if (ret == -ENOENT) { - if (truncated) - *truncated = false; - return 0; - } - - auto module = ctx->module; - - for (auto& o : oids) { - if (!module->is_valid_oid(o)) { - continue; - } - keys->emplace_back(module->oid_to_key(o)); - } - - return 0; -} - -int RGWSI_MetaBackend_SObj::list_get_marker(RGWSI_MetaBackend::Context *_ctx, - string *marker) -{ - RGWSI_MetaBackend_SObj::Context_SObj *ctx = static_cast(_ctx); - - return ctx->list.op->get_marker(marker); -} - diff --git a/src/rgw/services/svc_meta_be_sobj.h b/src/rgw/services/svc_meta_be_sobj.h deleted file mode 100644 index bf1ad1e68c740..0000000000000 --- a/src/rgw/services/svc_meta_be_sobj.h +++ /dev/null @@ -1,194 +0,0 @@ - - -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2019 Red Hat, Inc. - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - - -#pragma once - -#include "rgw_service.h" - -#include "svc_meta_be.h" -#include "svc_sys_obj.h" - - -class RGWSI_MBSObj_Handler_Module : public RGWSI_MetaBackend::Module { -protected: - std::string section; -public: - RGWSI_MBSObj_Handler_Module(const std::string& _section) : section(_section) {} - virtual void get_pool_and_oid(const std::string& key, rgw_pool *pool, std::string *oid) = 0; - virtual const std::string& get_oid_prefix() = 0; - virtual std::string key_to_oid(const std::string& key) = 0; - virtual bool is_valid_oid(const std::string& oid) = 0; - virtual std::string oid_to_key(const std::string& oid) = 0; - - const std::string& get_section() { - return section; - } - - /* key to use for hashing entries for log shard placement */ - virtual std::string get_hash_key(const std::string& key) { - return section + ":" + key; - } -}; - -struct RGWSI_MBSObj_GetParams : public RGWSI_MetaBackend::GetParams { - bufferlist *pbl{nullptr}; - std::map *pattrs{nullptr}; - rgw_cache_entry_info *cache_info{nullptr}; - boost::optional refresh_version; - - RGWSI_MBSObj_GetParams() {} - RGWSI_MBSObj_GetParams(bufferlist *_pbl, - std::map *_pattrs, - ceph::real_time *_pmtime) : RGWSI_MetaBackend::GetParams(_pmtime), - pbl(_pbl), - pattrs(_pattrs) {} - - RGWSI_MBSObj_GetParams& set_cache_info(rgw_cache_entry_info *_cache_info) { - cache_info = _cache_info; - return *this; - } - RGWSI_MBSObj_GetParams& set_refresh_version(boost::optional& _refresh_version) { - refresh_version = _refresh_version; - return *this; - } -}; - -struct RGWSI_MBSObj_PutParams : public RGWSI_MetaBackend::PutParams { - bufferlist bl; - const std::map *pattrs{nullptr}; - bool exclusive{false}; - - RGWSI_MBSObj_PutParams() {} - RGWSI_MBSObj_PutParams(const std::map *_pattrs, - const ceph::real_time& _mtime) : RGWSI_MetaBackend::PutParams(_mtime), - pattrs(_pattrs) {} - RGWSI_MBSObj_PutParams(bufferlist& _bl, - const std::map *_pattrs, - const ceph::real_time& _mtime, - bool _exclusive) : RGWSI_MetaBackend::PutParams(_mtime), - bl(_bl), - pattrs(_pattrs), - exclusive(_exclusive) {} -}; - -struct RGWSI_MBSObj_RemoveParams : public RGWSI_MetaBackend::RemoveParams { -}; - -class RGWSI_MetaBackend_SObj : public RGWSI_MetaBackend -{ -protected: - RGWSI_SysObj *sysobj_svc{nullptr}; - -public: - struct Context_SObj : public RGWSI_MetaBackend::Context { - RGWSI_MBSObj_Handler_Module *module{nullptr}; - struct _list { - std::optional pool; - std::optional op; - } list; - - void init(RGWSI_MetaBackend_Handler *h) override; - }; - - RGWSI_MetaBackend_SObj(CephContext *cct); - virtual ~RGWSI_MetaBackend_SObj(); - - RGWSI_MetaBackend::Type get_type() { - return MDBE_SOBJ; - } - - void init(RGWSI_SysObj *_sysobj_svc, - RGWSI_MDLog *_mdlog_svc) { - base_init(_mdlog_svc); - sysobj_svc = _sysobj_svc; - } - - RGWSI_MetaBackend_Handler *alloc_be_handler() override; - RGWSI_MetaBackend::Context *alloc_ctx() override; - - - int call_with_get_params(ceph::real_time *pmtime, std::function cb) override; - - int pre_modify(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, - RGWMDLogStatus op_type, - optional_yield y); - int post_modify(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWMetadataLogData& log_data, - RGWObjVersionTracker *objv_tracker, int ret, - optional_yield y); - - int get_entry(RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWSI_MetaBackend::GetParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y, - const DoutPrefixProvider *dpp, - bool get_raw_attrs=false) override; - int put_entry(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWSI_MetaBackend::PutParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) override; - int remove_entry(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *ctx, - const std::string& key, - RGWSI_MetaBackend::RemoveParams& params, - RGWObjVersionTracker *objv_tracker, - optional_yield y) override; - - int list_init(const DoutPrefixProvider *dpp, RGWSI_MetaBackend::Context *_ctx, const std::string& marker) override; - int list_next(const DoutPrefixProvider *dpp, - RGWSI_MetaBackend::Context *_ctx, - int max, std::list *keys, - bool *truncated) override; - int list_get_marker(RGWSI_MetaBackend::Context *ctx, - std::string *marker) override; - - int get_shard_id(RGWSI_MetaBackend::Context *ctx, - const std::string& key, - int *shard_id) override; - - int call(std::optional opt, - std::function f) override; -}; - - -class RGWSI_MetaBackend_Handler_SObj : public RGWSI_MetaBackend_Handler { - friend class RGWSI_MetaBackend_SObj::Context_SObj; - - RGWSI_MBSObj_Handler_Module *module{nullptr}; - -public: - RGWSI_MetaBackend_Handler_SObj(RGWSI_MetaBackend *be) : - RGWSI_MetaBackend_Handler(be) {} - - void set_module(RGWSI_MBSObj_Handler_Module *_module) { - module = _module; - } - - RGWSI_MBSObj_Handler_Module *get_module() { - return module; - } -}; diff --git a/src/rgw/services/svc_meta_be_types.h b/src/rgw/services/svc_meta_be_types.h deleted file mode 100644 index 6b3a91983ef20..0000000000000 --- a/src/rgw/services/svc_meta_be_types.h +++ /dev/null @@ -1,25 +0,0 @@ - -// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- -// vim: ts=8 sw=2 smarttab ft=cpp - -/* - * Ceph - scalable distributed file system - * - * Copyright (C) 2019 Red Hat, Inc. - * - * This is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License version 2.1, as published by the Free Software - * Foundation. See file COPYING. - * - */ - -#pragma once - -enum RGWSI_META_BE_TYPES { - SOBJ = 1, - BUCKET = 3, - BI = 4, - USER = 5, -}; - diff --git a/src/rgw/services/svc_user_rados.cc b/src/rgw/services/svc_user_rados.cc index 1e0533d2e8dec..a77f1168b64bf 100644 --- a/src/rgw/services/svc_user_rados.cc +++ b/src/rgw/services/svc_user_rados.cc @@ -9,7 +9,6 @@ #include "svc_zone.h" #include "svc_sys_obj.h" #include "svc_sys_obj_cache.h" -#include "svc_meta.h" #include "rgw_user.h" #include "rgw_account.h" @@ -40,8 +39,7 @@ void RGWSI_User_RADOS::init(librados::Rados* rados_, RGWSI_Zone *_zone_svc, RGWSI_MDLog *mdlog_svc, RGWSI_SysObj *_sysobj_svc, - RGWSI_SysObj_Cache *_cache_svc, - RGWSI_Meta *_meta_svc) + RGWSI_SysObj_Cache *_cache_svc) { svc.user = this; rados = rados_; @@ -49,7 +47,6 @@ void RGWSI_User_RADOS::init(librados::Rados* rados_, svc.mdlog = mdlog_svc; svc.sysobj = _sysobj_svc; svc.cache = _cache_svc; - svc.meta = _meta_svc; } int RGWSI_User_RADOS::do_start(optional_yield, const DoutPrefixProvider *dpp) diff --git a/src/rgw/services/svc_user_rados.h b/src/rgw/services/svc_user_rados.h index 24c2368062f67..db2e2042bd460 100644 --- a/src/rgw/services/svc_user_rados.h +++ b/src/rgw/services/svc_user_rados.h @@ -26,7 +26,6 @@ class RGWSI_MDLog; class RGWSI_Zone; class RGWSI_SysObj; class RGWSI_SysObj_Cache; -class RGWSI_Meta; class RGWSI_SyncModules; struct rgw_cache_entry_info; @@ -78,7 +77,6 @@ public: RGWSI_MDLog *mdlog{nullptr}; RGWSI_SysObj *sysobj{nullptr}; RGWSI_SysObj_Cache *cache{nullptr}; - RGWSI_Meta *meta{nullptr}; } svc; RGWSI_User_RADOS(CephContext *cct); @@ -88,8 +86,7 @@ public: RGWSI_Zone *_zone_svc, RGWSI_MDLog *mdlog_svc, RGWSI_SysObj *_sysobj_svc, - RGWSI_SysObj_Cache *_cache_svc, - RGWSI_Meta *_meta_svc); + RGWSI_SysObj_Cache *_cache_svc); int create_lister(const DoutPrefixProvider* dpp, const std::string& marker, -- 2.39.5