]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: don't use self_ref
authorYehuda Sadeh <yehuda@redhat.com>
Mon, 24 Sep 2018 23:54:33 +0000 (16:54 -0700)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 11 Dec 2018 08:10:43 +0000 (00:10 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_tools.cc
src/rgw/rgw_tools.h

index 0888bab7672c35179ff7b4048d18b4144aebe38a..8b7b56429498b2a5c70d51349e5ead7281e9f85e 100644 (file)
@@ -320,7 +320,7 @@ int RGWDataAccess::Bucket::init(const RGWBucketInfo& _bucket_info,
 
 int RGWDataAccess::Bucket::get_object(const rgw_obj_key& key,
                                      ObjectRef *obj) {
-  obj->reset(new Object(sd, self_ref, key));
+  obj->reset(new Object(sd, shared_from_this(), key));
   return 0;
 }
 
index 59afa8357bffaa67e76b5e60c616fa0c8a42b241..1ca2452a6f17cc53ece6c7f6118d9b1584e05a42 100644 (file)
@@ -96,12 +96,10 @@ public:
   using BucketRef = std::shared_ptr<Bucket>;
   using ObjectRef = std::shared_ptr<Object>;
 
-  class Bucket {
+  class Bucket : public enable_shared_from_this<Bucket> {
     friend class RGWDataAccess;
     friend class Object;
 
-    std::shared_ptr<Bucket> self_ref;
-
     RGWDataAccess *sd{nullptr};
     RGWBucketInfo bucket_info;
     string tenant;
@@ -144,7 +142,7 @@ public:
     std::optional<bufferlist> aclbl;
 
     Object(RGWDataAccess *_sd,
-           BucketRef& _bucket,
+           BucketRef&& _bucket,
            const rgw_obj_key& _key) : sd(_sd),
                                       bucket(_bucket),
                                       key(_key) {}
@@ -181,7 +179,6 @@ public:
                 const string bucket_id,
                 BucketRef *bucket) {
     bucket->reset(new Bucket(this, tenant, name, bucket_id));
-    (*bucket)->self_ref = *bucket;
     return (*bucket)->init();
   }
 
@@ -189,7 +186,6 @@ public:
                 const map<string, bufferlist>& attrs,
                 BucketRef *bucket) {
     bucket->reset(new Bucket(this));
-    (*bucket)->self_ref = *bucket;
     return (*bucket)->init(bucket_info, attrs);
   }
   friend class Bucket;