From f2807f02b0da3065accfc05a5ff990148d8a1b08 Mon Sep 17 00:00:00 2001 From: "Adam C. Emerson" Date: Fri, 2 Dec 2022 02:59:11 -0500 Subject: [PATCH] rgw: Remove `RGWSI_RADOS` from `RGWSI_User_RADOS` Simply use the RADOS handle and `rgw_rados_ref` directly. Signed-off-by: Adam C. Emerson --- src/rgw/driver/rados/rgw_service.cc | 2 +- src/rgw/services/svc_user_rados.cc | 39 +++++++++++++++-------------- src/rgw/services/svc_user_rados.h | 6 ++--- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/rgw/driver/rados/rgw_service.cc b/src/rgw/driver/rados/rgw_service.cc index cf03d7b220deb..dfde5c85eab5a 100644 --- a/src/rgw/driver/rados/rgw_service.cc +++ b/src/rgw/driver/rados/rgw_service.cc @@ -120,7 +120,7 @@ int RGWServices_Def::init(CephContext *cct, } else { sysobj->init(rados.get(), sysobj_core.get()); } - user_rados->init(rados.get(), zone.get(), sysobj.get(), sysobj_cache.get(), + user_rados->init(radoshandle, zone.get(), sysobj.get(), sysobj_cache.get(), meta.get(), meta_be_sobj.get(), sync_modules.get()); role_rados->init(zone.get(), meta.get(), meta_be_sobj.get(), sysobj.get()); diff --git a/src/rgw/services/svc_user_rados.cc b/src/rgw/services/svc_user_rados.cc index b9dd8cd155354..dd48bc4c01efe 100644 --- a/src/rgw/services/svc_user_rados.cc +++ b/src/rgw/services/svc_user_rados.cc @@ -67,14 +67,14 @@ RGWSI_User_RADOS::RGWSI_User_RADOS(CephContext *cct): RGWSI_User(cct) { RGWSI_User_RADOS::~RGWSI_User_RADOS() { } -void RGWSI_User_RADOS::init(RGWSI_RADOS *_rados_svc, +void RGWSI_User_RADOS::init(librados::Rados* rados_, RGWSI_Zone *_zone_svc, RGWSI_SysObj *_sysobj_svc, RGWSI_SysObj_Cache *_cache_svc, RGWSI_Meta *_meta_svc, RGWSI_MetaBackend *_meta_be_svc, RGWSI_SyncModules *_sync_modules_svc) { svc.user = this; - svc.rados = _rados_svc; + rados = rados_; svc.zone = _zone_svc; svc.sysobj = _sysobj_svc; svc.cache = _cache_svc; @@ -602,8 +602,8 @@ int RGWSI_User_RADOS::get_user_info_by_access_key(RGWSI_MetaBackend::Context *ct int RGWSI_User_RADOS::cls_user_update_buckets(const DoutPrefixProvider *dpp, rgw_raw_obj& obj, list& entries, bool add, optional_yield y) { - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } @@ -628,8 +628,8 @@ int RGWSI_User_RADOS::cls_user_add_bucket(const DoutPrefixProvider *dpp, rgw_raw int RGWSI_User_RADOS::cls_user_remove_bucket(const DoutPrefixProvider *dpp, rgw_raw_obj& obj, const cls_user_bucket& bucket, optional_yield y) { - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } @@ -716,8 +716,8 @@ int RGWSI_User_RADOS::cls_user_list_buckets(const DoutPrefixProvider *dpp, bool * const truncated, optional_yield y) { - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } @@ -804,12 +804,14 @@ int RGWSI_User_RADOS::reset_bucket_stats(const DoutPrefixProvider *dpp, int RGWSI_User_RADOS::cls_user_reset_stats(const DoutPrefixProvider *dpp, const rgw_user& user, optional_yield y) { rgw_raw_obj obj = get_buckets_obj(user); - auto rados_obj = svc.rados->obj(obj); - int rval, r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } + int rval; + cls_user_reset_stats2_op call; cls_user_reset_stats2_ret ret; @@ -841,11 +843,12 @@ int RGWSI_User_RADOS::complete_flush_stats(const DoutPrefixProvider *dpp, const rgw_user& user, optional_yield y) { rgw_raw_obj obj = get_buckets_obj(user); - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } + librados::ObjectWriteOperation op; ::cls_user_complete_stats_sync(op); return rados_obj.operate(dpp, &op, y); @@ -856,8 +859,8 @@ int RGWSI_User_RADOS::cls_user_get_header(const DoutPrefixProvider *dpp, optional_yield y) { rgw_raw_obj obj = get_buckets_obj(user); - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref rados_obj; + int r = rgw_get_rados_ref(dpp, rados, obj, &rados_obj); if (r < 0) { return r; } @@ -871,15 +874,13 @@ int RGWSI_User_RADOS::cls_user_get_header(const DoutPrefixProvider *dpp, int RGWSI_User_RADOS::cls_user_get_header_async(const DoutPrefixProvider *dpp, const string& user_str, RGWGetUserHeader_CB *cb) { rgw_raw_obj obj = get_buckets_obj(rgw_user(user_str)); - auto rados_obj = svc.rados->obj(obj); - int r = rados_obj.open(dpp); + rgw_rados_ref ref; + int r = rgw_get_rados_ref(dpp, rados, obj, &ref); if (r < 0) { return r; } - auto& ref = rados_obj.get_ref(); - - r = ::cls_user_get_header_async(ref.pool.ioctx(), ref.obj.oid, cb); + r = ::cls_user_get_header_async(ref.ioctx, ref.obj.oid, cb); if (r < 0) { return r; } diff --git a/src/rgw/services/svc_user_rados.h b/src/rgw/services/svc_user_rados.h index 01d8a8eb1ccb3..6912327f0b1b4 100644 --- a/src/rgw/services/svc_user_rados.h +++ b/src/rgw/services/svc_user_rados.h @@ -23,7 +23,6 @@ #include "driver/rados/rgw_bucket.h" // FIXME: subclass dependency -class RGWSI_RADOS; class RGWSI_Zone; class RGWSI_SysObj; class RGWSI_SysObj_Cache; @@ -96,9 +95,10 @@ class RGWSI_User_RADOS : public RGWSI_User int do_start(optional_yield, const DoutPrefixProvider *dpp) override; public: + librados::Rados* rados{nullptr}; + struct Svc { RGWSI_User_RADOS *user{nullptr}; - RGWSI_RADOS *rados{nullptr}; RGWSI_Zone *zone{nullptr}; RGWSI_SysObj *sysobj{nullptr}; RGWSI_SysObj_Cache *cache{nullptr}; @@ -110,7 +110,7 @@ public: RGWSI_User_RADOS(CephContext *cct); ~RGWSI_User_RADOS(); - void init(RGWSI_RADOS *_rados_svc, + void init(librados::Rados* rados_, RGWSI_Zone *_zone_svc, RGWSI_SysObj *_sysobj_svc, RGWSI_SysObj_Cache *_cache_svc, RGWSI_Meta *_meta_svc, RGWSI_MetaBackend *_meta_be_svc, -- 2.39.5