From: Daniel Gryniewicz Date: Tue, 2 Aug 2022 16:28:00 +0000 (-0400) Subject: RGW - Zipper - Use zipper APIs X-Git-Tag: v18.0.0~186^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5211f655bdf0fc3bcf3f4e4029612e80a9d8c55c;p=ceph.git RGW - Zipper - Use zipper APIs Some code was using old, non-zipper versions of code that existed in zipper. Use the zipper versions instead. Signed-off-by: Daniel Gryniewicz --- diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index ae4ec9b50edf..b9f1eb3de22a 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -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(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(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 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); diff --git a/src/rgw/rgw_lc.cc b/src/rgw/rgw_lc.cc index ec2bba845c64..2612c3988c5f 100644 --- a/src/rgw/rgw_lc.cc +++ b/src/rgw/rgw_lc.cc @@ -1323,14 +1323,6 @@ public: return 0; } - /* Allow transition for only RadosStore */ - rgw::sal::RadosStore *rados = dynamic_cast(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 << ")" diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 9cb54e25cdd2..3871dab37e2c 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -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(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; } diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 0dfb6dc8fca4..e6669479719e 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -25,15 +25,9 @@ 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; class RGWDataSyncStatusManager; diff --git a/src/rgw/rgw_sal_dbstore.cc b/src/rgw/rgw_sal_dbstore.cc index b4b1d08464ab..970f3edbde5a 100644 --- a/src/rgw/rgw_sal_dbstore.cc +++ b/src/rgw/rgw_sal_dbstore.cc @@ -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& 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 */ diff --git a/src/rgw/rgw_sal_dbstore.h b/src/rgw/rgw_sal_dbstore.h index 4c1eca4110ab..7f10ba7e75a4 100644 --- a/src/rgw/rgw_sal_dbstore.h +++ b/src/rgw/rgw_sal_dbstore.h @@ -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& 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; diff --git a/src/rgw/rgw_sal_motr.cc b/src/rgw/rgw_sal_motr.cc index 72cb883a596e..d4b91faaf4ad 100644 --- a/src/rgw/rgw_sal_motr.cc +++ b/src/rgw/rgw_sal_motr.cc @@ -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& 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 */ diff --git a/src/rgw/rgw_sal_motr.h b/src/rgw/rgw_sal_motr.h index 816bf2bc6063..91e45d5e5cc3 100644 --- a/src/rgw/rgw_sal_motr.h +++ b/src/rgw/rgw_sal_motr.h @@ -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& 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; diff --git a/src/rgw/rgw_sal_store.h b/src/rgw/rgw_sal_store.h index fbdb2d9815b7..5e2e2b7bcce9 100644 --- a/src/rgw/rgw_sal_store.h +++ b/src/rgw/rgw_sal_store.h @@ -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& 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)