From 4e33f3d1a22603c1096308312c1a01a309f8b274 Mon Sep 17 00:00:00 2001 From: Daniel Gryniewicz Date: Tue, 11 May 2021 13:26:04 -0400 Subject: [PATCH] RGW Zipper - consolidate two bucket remove APIs Bucket::remove_entrypoint() and Bucket::remove_instance_info() are only used together, and take the same args. Combine them into a single call. Signed-off-by: Daniel Gryniewicz --- src/rgw/rgw_bucket.cc | 10 ++-------- src/rgw/rgw_sal.h | 3 +-- src/rgw/rgw_sal_rados.cc | 9 ++++----- src/rgw/rgw_sal_rados.h | 3 +-- 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 7df17043bdd53..f03d3919a543f 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -1069,15 +1069,9 @@ int RGWBucketAdminOp::link(rgw::sal::Store* store, RGWBucketAdminOpState& op_sta if (*loc_bucket != *old_bucket) { // like RGWRados::delete_bucket -- excepting no bucket_index work. - r = old_bucket->remove_entrypoint(dpp, &ep_data.ep_objv, null_yield); + r = old_bucket->remove_metadata(dpp, &ep_data.ep_objv, null_yield); if (r < 0) { - set_err_msg(err, "failed to unlink old bucket endpoint " + old_bucket->get_tenant() + "/" + old_bucket->get_name()); - return r; - } - - r = old_bucket->remove_instance_info(dpp, &old_version, null_yield); - if (r < 0) { - set_err_msg(err, "failed to unlink old bucket info"); + set_err_msg(err, "failed to unlink old bucket " + old_bucket->get_tenant() + "/" + old_bucket->get_name()); return r; } } diff --git a/src/rgw/rgw_sal.h b/src/rgw/rgw_sal.h index 5901b4749eb09..e5c26f24e4cf3 100644 --- a/src/rgw/rgw_sal.h +++ b/src/rgw/rgw_sal.h @@ -392,8 +392,7 @@ class Bucket { virtual int check_bucket_shards(const DoutPrefixProvider* dpp) = 0; virtual int chown(const DoutPrefixProvider* dpp, User* new_user, User* old_user, optional_yield y, const std::string* marker = nullptr) = 0; virtual int put_instance_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime) = 0; - virtual int remove_entrypoint(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) = 0; - virtual int remove_instance_info(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) = 0; + virtual int remove_metadata(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) = 0; virtual bool is_owner(User* user) = 0; virtual User* get_owner(void) { return owner; }; virtual ACLOwner get_acl_owner(void) { return ACLOwner(info.owner); }; diff --git a/src/rgw/rgw_sal_rados.cc b/src/rgw/rgw_sal_rados.cc index 51d2a28585084..2c6f66121d9e5 100644 --- a/src/rgw/rgw_sal_rados.cc +++ b/src/rgw/rgw_sal_rados.cc @@ -450,15 +450,14 @@ int RadosBucket::put_instance_info(const DoutPrefixProvider* dpp, bool exclusive return store->getRados()->put_bucket_instance_info(info, exclusive, mtime, &attrs, dpp); } -int RadosBucket::remove_entrypoint(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) +int RadosBucket::remove_metadata(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) { - return store->ctl()->bucket->remove_bucket_entrypoint_info(get_key(), y, dpp, + int r = store->ctl()->bucket->remove_bucket_entrypoint_info(get_key(), y, dpp, RGWBucketCtl::Bucket::RemoveParams() .set_objv_tracker(objv)); -} + if (r < 0) + return r; -int RadosBucket::remove_instance_info(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) -{ return store->ctl()->bucket->remove_bucket_instance_info(get_key(), info, y, dpp, RGWBucketCtl::BucketInstance::RemoveParams() .set_objv_tracker(objv)); diff --git a/src/rgw/rgw_sal_rados.h b/src/rgw/rgw_sal_rados.h index 0f1814e92b569..8f8edaa1e02be 100644 --- a/src/rgw/rgw_sal_rados.h +++ b/src/rgw/rgw_sal_rados.h @@ -306,8 +306,7 @@ class RadosBucket : public Bucket { virtual int check_bucket_shards(const DoutPrefixProvider* dpp) override; virtual int chown(const DoutPrefixProvider* dpp, User* new_user, User* old_user, optional_yield y, const std::string* marker = nullptr) override; virtual int put_instance_info(const DoutPrefixProvider* dpp, bool exclusive, ceph::real_time mtime) override; - virtual int remove_entrypoint(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) override; - virtual int remove_instance_info(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) override; + virtual int remove_metadata(const DoutPrefixProvider* dpp, RGWObjVersionTracker* objv, optional_yield y) override; virtual bool is_owner(User* user) override; virtual int check_empty(const DoutPrefixProvider* dpp, optional_yield y) override; virtual int check_quota(RGWQuotaInfo& user_quota, RGWQuotaInfo& bucket_quota, uint64_t obj_size, optional_yield y, bool check_size_only = false) override; -- 2.39.5