]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: keep sync_policy as optional member inside RGWBucketInfo
authorYehuda Sadeh <yehuda@redhat.com>
Mon, 27 Jan 2020 22:58:21 +0000 (14:58 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Tue, 28 Jan 2020 18:20:40 +0000 (10:20 -0800)
Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_admin.cc
src/rgw/rgw_common.cc
src/rgw/rgw_common.h
src/rgw/rgw_sync_policy.h
src/rgw/services/svc_bucket_sobj.cc

index 9a8c4eb0258b21e9b8f9d808b5852bf3c00d35da..4d0c382d8041cbc57a5562343860a5c0dd403ff7 100644 (file)
@@ -2916,7 +2916,7 @@ public:
       bucket_info.set_sync_policy(std::move(new_policy));
     }
 
-    policy = (rgw_sync_policy_info *)bucket_info.sync_policy.get();
+    policy = &(*bucket_info.sync_policy);
 
     return 0;
   }
index 5288ee72841d737d38674fd0494d57449888cd9a..d3c8434369099b9ab0f49387346392387c3debe7 100644 (file)
@@ -2085,15 +2085,7 @@ void RGWBucketInfo::decode(bufferlist::const_iterator& bl) {
     decode(obj_lock, bl);
   }
   if (struct_v >= 21) {
-    bool has_sync_policy;
-    decode(has_sync_policy, bl);
-    if (has_sync_policy) {
-      auto policy = make_shared<rgw_sync_policy_info>();
-      decode(*policy, bl);
-      sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(policy);
-    } else {
-      sync_policy.reset();
-    }
+    decode(sync_policy, bl);
   }
   
   DECODE_FINISH(bl);
@@ -2101,8 +2093,7 @@ void RGWBucketInfo::decode(bufferlist::const_iterator& bl) {
 
 void RGWBucketInfo::set_sync_policy(rgw_sync_policy_info&& policy)
 {
-  auto shared_policy = make_shared<rgw_sync_policy_info>(policy);
-  sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(shared_policy);
+  sync_policy = std::move(policy);
 }
 
 bool RGWBucketInfo::empty_sync_policy() const
index 9627b70155a3e8ab2c8e58252c5c0596080b9834..4af59af8225eb68795e7175d1e619084751a6459 100644 (file)
@@ -32,6 +32,7 @@
 #include "rgw_website.h"
 #include "rgw_object_lock.h"
 #include "rgw_tag.h"
+#include "rgw_sync_policy.h"
 #include "cls/version/cls_version_types.h"
 #include "cls/user/cls_user_types.h"
 #include "cls/rgw/cls_rgw_types.h"
@@ -1097,7 +1098,6 @@ inline ostream& operator<<(ostream& out, const RGWBucketIndexType &index_type)
   }
 }
 
-struct rgw_sync_policy_info;
 class RGWSI_Zone;
 
 struct RGWBucketInfo {
@@ -1147,7 +1147,7 @@ struct RGWBucketInfo {
 
   RGWObjectLock obj_lock;
 
-  std::shared_ptr<const rgw_sync_policy_info> sync_policy;
+  std::optional<rgw_sync_policy_info> sync_policy;
 
   void encode(bufferlist& bl) const;
   void decode(bufferlist::const_iterator& bl);
index f177e6b9e30a5bca6e5d8392303b45aecc6a30ce..0826c05c147e24a7b4d913ce7605e955e0edc28d 100644 (file)
@@ -15,7 +15,7 @@
 
 #pragma once
 
-#include "rgw_common.h"
+#include "rgw_basic_types.h"
 
 
 struct rgw_sync_symmetric_group {
index 122a74d5dfeac580477c751396cf335d6b9d9ad9..9d77f5b430f9c11f5f90aa896aded97be1f57a92 100644 (file)
@@ -300,11 +300,6 @@ int RGWSI_Bucket_SObj::read_bucket_instance_info(RGWSI_Bucket_BI_Ctx& ctx,
                                   &ci, refresh_version, y);
   *info = e.info;
 
-  if (info->sync_policy) { /* fork policy off cache */
-    auto policy = make_shared<rgw_sync_policy_info>(*info->sync_policy);
-    info->sync_policy = std::const_pointer_cast<const rgw_sync_policy_info>(policy);
-  }
-
   if (ret < 0) {
     if (ret != -ENOENT) {
       lderr(cct) << "ERROR: do_read_bucket_instance_info failed: " << ret << dendl;