]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
RGW - Zipper - Use zipper APIs 47561/head
authorDaniel Gryniewicz <dang@redhat.com>
Tue, 2 Aug 2022 16:28:00 +0000 (12:28 -0400)
committerDaniel Gryniewicz <dang@redhat.com>
Tue, 16 Aug 2022 16:31:27 +0000 (12:31 -0400)
Some code was using old, non-zipper versions of code that existed in
zipper.  Use the zipper versions instead.

Signed-off-by: Daniel Gryniewicz <dang@redhat.com>
src/rgw/rgw_bucket.cc
src/rgw/rgw_lc.cc
src/rgw/rgw_rest_s3.cc
src/rgw/rgw_sal.h
src/rgw/rgw_sal_dbstore.cc
src/rgw/rgw_sal_dbstore.h
src/rgw/rgw_sal_motr.cc
src/rgw/rgw_sal_motr.h
src/rgw/rgw_sal_store.h

index ae4ec9b50edfca26e1ad0a331b8335168acb326c..b9f1eb3de22a9461126cdc21e6ef6eba25d40053 100644 (file)
@@ -1302,28 +1302,6 @@ int RGWBucketAdminOp::set_quota(rgw::sal::Store* store, RGWBucketAdminOpState& o
   return bucket.set_quota(op_state, dpp);
 }
 
-static int purge_bucket_instance(rgw::sal::Store* store, const RGWBucketInfo& bucket_info, const DoutPrefixProvider *dpp)
-{
-  const auto& index = bucket_info.layout.current_index;
-  const int max_shards = num_shards(index);
-  for (int i = 0; i < max_shards; i++) {
-    RGWRados::BucketShard bs(static_cast<rgw::sal::RadosStore*>(store)->getRados());
-    int ret = bs.init(dpp, bucket_info, index, i);
-    if (ret < 0) {
-      cerr << "ERROR: bs.init(bucket=" << bucket_info.bucket << ", shard=" << i
-           << "): " << cpp_strerror(-ret) << std::endl;
-      return ret;
-    }
-    ret = static_cast<rgw::sal::RadosStore*>(store)->getRados()->bi_remove(dpp, bs);
-    if (ret < 0) {
-      cerr << "ERROR: failed to remove bucket index object: "
-           << cpp_strerror(-ret) << std::endl;
-      return ret;
-    }
-  }
-  return 0;
-}
-
 inline auto split_tenant(const std::string& bucket_name){
   auto p = bucket_name.find('/');
   if(p != std::string::npos) {
@@ -1501,7 +1479,9 @@ int RGWBucketAdminOp::clear_stale_instances(rgw::sal::Store* store,
                       Formatter *formatter,
                       rgw::sal::Store* store){
                      for (const auto &binfo: lst) {
-                       int ret = purge_bucket_instance(store, binfo, dpp);
+                      std::unique_ptr<rgw::sal::Bucket> bucket;
+                      store->get_bucket(nullptr, binfo, &bucket);
+                      int ret = bucket->purge_instance(dpp);
                        if (ret == 0){
                          auto md_key = "bucket.instance:" + binfo.bucket.get_key();
                          ret = store->meta_remove(dpp, md_key, null_yield);
index ec2bba845c64f23f2437f0c03b3adf9d96fe0c83..2612c3988c5f8ebb5aa91dec86d94778a13b9e91 100644 (file)
@@ -1323,14 +1323,6 @@ public:
         return 0;
       }
 
-      /* Allow transition for only RadosStore */
-      rgw::sal::RadosStore *rados = dynamic_cast<rgw::sal::RadosStore*>(oc.store);
-
-      if (!rados) {
-        ldpp_dout(oc.dpp, 10) << "Object(key:" << oc.o.key << ") is not on RadosStore. Skipping transition to cloud-s3 tier: " << target_placement.storage_class << dendl;
-        return -1;
-      }
-
       r = transition_obj_to_cloud(oc);
       if (r < 0) {
         ldpp_dout(oc.dpp, 0) << "ERROR: failed to transition obj(key:" << oc.o.key << ") to cloud (r=" << r << ")"
index 9cb54e25cdd2096d81a737999c5f7b5eef32b94a..3871dab37e2c52068fb136a512c3af22719ad405 100644 (file)
@@ -60,8 +60,6 @@
 #include "rgw_zone.h"
 #include "rgw_bucket_sync.h"
 
-#include "services/svc_zone.h"
-
 #include "include/ceph_assert.h"
 #include "rgw_role.h"
 #include "rgw_rest_sts.h"
@@ -4595,8 +4593,10 @@ RGWOp *RGWHandler_REST_Bucket_S3::op_put()
   } else if (is_notification_op()) {
     return RGWHandler_REST_PSNotifs_S3::create_put_op();
   } else if (is_replication_op()) {
-    auto sync_policy_handler = static_cast<rgw::sal::RadosStore*>(store)->svc()->zone->get_sync_policy_handler(nullopt);
-    if (!sync_policy_handler ||
+    RGWBucketSyncPolicyHandlerRef sync_policy_handler;
+    int ret = store->get_sync_policy_handler(s, nullopt, nullopt,
+                                            &sync_policy_handler, null_yield);
+    if (ret < 0 || !sync_policy_handler ||
         sync_policy_handler->is_legacy_config()) {
       return nullptr;
     }
index 0dfb6dc8fca45e7a8b6f95ebd524875023929a18..e6669479719e62d82d0c20be4a67754000d0b68c 100644 (file)
 
 class RGWAccessListFilter;
 class RGWLC;
-class RGWObjManifest;
-struct RGWZoneGroup;
-struct RGWZoneParams;
-class RGWRealm;
-struct RGWCtl;
 struct rgw_user_bucket;
 class RGWUsageBatch;
 class RGWCoroutinesManagerRegistry;
-class RGWListRawObjsCtx;
 class RGWBucketSyncPolicyHandler;
 using RGWBucketSyncPolicyHandlerRef = std::shared_ptr<RGWBucketSyncPolicyHandler>;
 class RGWDataSyncStatusManager;
index b4b1d08464abafaaf5de049872bbb56ea7b44f7c..970f3edbde5ad488d8bf9649a1ee5521cce67b31 100644 (file)
@@ -735,18 +735,6 @@ namespace rgw::sal {
     return op_target.transition(dpp, placement_rule, mtime, olh_epoch);
   }
 
-  int DBObject::transition_to_cloud(Bucket* bucket,
-                          rgw::sal::PlacementTier* tier,
-                          rgw_bucket_dir_entry& o,
-                          std::set<std::string>& cloud_targets,
-                          CephContext* cct,
-                          bool update_object,
-                          const DoutPrefixProvider* dpp,
-                          optional_yield y)
-  {
-    return 0;
-  }
-
   bool DBObject::placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2)
   {
     /* XXX: support single default zone and zonegroup for now */
index 4c1eca4110ab4d26d52f1a7a450d872086b3c618..7f10ba7e75a4ca332802009147c0425b75b91745 100644 (file)
@@ -606,14 +606,6 @@ protected:
           uint64_t olh_epoch,
           const DoutPrefixProvider* dpp,
           optional_yield y) override;
-    virtual int transition_to_cloud(Bucket* bucket,
-                          rgw::sal::PlacementTier* tier,
-                          rgw_bucket_dir_entry& o,
-                          std::set<std::string>& cloud_targets,
-                          CephContext* cct,
-                          bool update_object,
-                          const DoutPrefixProvider* dpp,
-                          optional_yield y) override;
       virtual bool placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2) override;
       virtual int dump_obj_layout(const DoutPrefixProvider *dpp, optional_yield y, Formatter* f) override;
 
index 72cb883a596e88a86fefb17e23f478da6bc132c7..d4b91faaf4aded29a89c864b0c523de34e9fb46b 100644 (file)
@@ -1122,18 +1122,6 @@ int MotrObject::transition(Bucket* bucket,
   return 0;
 }
 
-int MotrObject::transition_to_cloud(Bucket* bucket,
-                          rgw::sal::PlacementTier* tier,
-                          rgw_bucket_dir_entry& o,
-                          std::set<std::string>& cloud_targets,
-                          CephContext* cct,
-                          bool update_object,
-                          const DoutPrefixProvider* dpp,
-                          optional_yield y)
-{
-  return 0;
-}
-
 bool MotrObject::placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2)
 {
   /* XXX: support single default zone and zonegroup for now */
index 816bf2bc6063ec6c7e9e7e386131627c51713102..91e45d5e5cc3e418e15ecf12bf7ed426a92157a2 100644 (file)
@@ -634,14 +634,6 @@ class MotrObject : public StoreObject {
         uint64_t olh_epoch,
         const DoutPrefixProvider* dpp,
         optional_yield y) override;
-    virtual int transition_to_cloud(Bucket* bucket,
-                          rgw::sal::PlacementTier* tier,
-                          rgw_bucket_dir_entry& o,
-                          std::set<std::string>& cloud_targets,
-                          CephContext* cct,
-                          bool update_object,
-                          const DoutPrefixProvider* dpp,
-                          optional_yield y) override;
     virtual bool placement_rules_match(rgw_placement_rule& r1, rgw_placement_rule& r2) override;
     virtual int dump_obj_layout(const DoutPrefixProvider *dpp, optional_yield y, Formatter* f) override;
 
index fbdb2d9815b7ae23b46c0c1ce51eb21c0e6fcd3e..5e2e2b7bcce9b2b4d10f2dc2182c23be48e81a1d 100644 (file)
@@ -233,6 +233,18 @@ class StoreObject : public Object {
     virtual const std::string &get_instance() const override { return state.obj.key.instance; }
     virtual bool have_instance(void) override { return state.obj.key.have_instance(); }
     virtual void clear_instance() override { state.obj.key.instance.clear(); }
+    virtual int transition_to_cloud(Bucket* bucket,
+                          rgw::sal::PlacementTier* tier,
+                          rgw_bucket_dir_entry& o,
+                          std::set<std::string>& cloud_targets,
+                          CephContext* cct,
+                          bool update_object,
+                          const DoutPrefixProvider* dpp,
+                          optional_yield y) override {
+      /* Return failure here, so stores which don't transition to cloud will
+       * work with lifecycle */
+      return -1;
+    }
 
     virtual void print(std::ostream& out) const override {
       if (bucket)