]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Remove `RGWSI_RADOS` from `RGWSI_User_RADOS`
authorAdam C. Emerson <aemerson@redhat.com>
Fri, 2 Dec 2022 07:59:11 +0000 (02:59 -0500)
committerCasey Bodley <cbodley@redhat.com>
Wed, 29 Nov 2023 18:15:27 +0000 (13:15 -0500)
Simply use the RADOS handle and `rgw_rados_ref` directly.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
src/rgw/driver/rados/rgw_service.cc
src/rgw/services/svc_user_rados.cc
src/rgw/services/svc_user_rados.h

index cf03d7b220deb5733b7868ec61ef1f6248f844e8..dfde5c85eab5a678fd041fcec42579882df45b72 100644 (file)
@@ -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());
 
index b9dd8cd155354d2dcc15b1346910275baf76be48..dd48bc4c01efef492b5757d19877fc4c289197e0 100644 (file)
@@ -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<cls_user_bucket_entry>& 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;
   }
index 01d8a8eb1ccb3cf68e470c7c256b74c5a9f29ec2..6912327f0b1b4a9a5b20f322ffd8d1c04fe0b0c4 100644 (file)
@@ -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,