From f61227e4722d9b5c68bbdbb2e89ca9903b5c5724 Mon Sep 17 00:00:00 2001 From: Soumya Koduri Date: Fri, 30 Apr 2021 02:10:06 +0530 Subject: [PATCH] rgw/acl: set_acl shouldn't overwrite bucket attrs Signed-off-by: Soumya Koduri --- src/rgw/rgw_bucket.cc | 19 ------------------- src/rgw/rgw_bucket.h | 4 ---- src/rgw/rgw_sal_rados.cc | 14 +++++++++++++- 3 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/rgw/rgw_bucket.cc b/src/rgw/rgw_bucket.cc index 4dbeec2287d3b..d888f0f1a3293 100644 --- a/src/rgw/rgw_bucket.cc +++ b/src/rgw/rgw_bucket.cc @@ -3032,25 +3032,6 @@ int RGWBucketCtl::do_unlink_bucket(RGWSI_Bucket_EP_Ctx& ctx, return svc.bucket->store_bucket_entrypoint_info(ctx, meta_key, ep, false, real_time(), &attrs, &ot, y, dpp); } -int RGWBucketCtl::set_acl(ACLOwner& owner, rgw_bucket& bucket, - RGWBucketInfo& bucket_info, bufferlist& bl, - optional_yield y, - const DoutPrefixProvider *dpp) -{ - // set owner and acl - bucket_info.owner = owner.get_id(); - std::map attrs{{RGW_ATTR_ACL, bl}}; - - int r = store_bucket_instance_info(bucket, bucket_info, y, dpp, - BucketInstance::PutParams().set_attrs(&attrs)); - if (r < 0) { - cerr << "ERROR: failed to set bucket owner: " << cpp_strerror(-r) << std::endl; - return r; - } - - return 0; -} - // TODO: remove RGWRados dependency for bucket listing int RGWBucketCtl::chown(rgw::sal::Store* store, rgw::sal::Bucket* bucket, const rgw_user& user_id, const std::string& display_name, diff --git a/src/rgw/rgw_bucket.h b/src/rgw/rgw_bucket.h index 3ce0f3baad0a3..c867a80fd8fad 100644 --- a/src/rgw/rgw_bucket.h +++ b/src/rgw/rgw_bucket.h @@ -694,10 +694,6 @@ public: const rgw_user& user_id, const std::string& display_name, const std::string& marker, optional_yield y, const DoutPrefixProvider *dpp); - int set_acl(ACLOwner& owner, rgw_bucket& bucket, - RGWBucketInfo& bucket_info, bufferlist& bl, optional_yield y, - const DoutPrefixProvider *dpp); - int read_buckets_stats(map& m, optional_yield y, const DoutPrefixProvider *dpp); diff --git a/src/rgw/rgw_sal_rados.cc b/src/rgw/rgw_sal_rados.cc index 486b875782b58..e80de99c0dd2b 100644 --- a/src/rgw/rgw_sal_rados.cc +++ b/src/rgw/rgw_sal_rados.cc @@ -538,8 +538,20 @@ int RadosBucket::set_acl(const DoutPrefixProvider* dpp, RGWAccessControlPolicy & acls = acl; acl.encode(aclbl); + map& attrs = get_attrs(); - return store->ctl()->bucket->set_acl(acl.get_owner(), info.bucket, info, aclbl, y, dpp); + attrs[RGW_ATTR_ACL] = aclbl; + info.owner = acl.get_owner().get_id(); + + int r = store->ctl()->bucket->store_bucket_instance_info(info.bucket, + info, y, dpp, + RGWBucketCtl::BucketInstance::PutParams().set_attrs(&attrs)); + if (r < 0) { + cerr << "ERROR: failed to set bucket owner: " << cpp_strerror(-r) << std::endl; + return r; + } + + return 0; } std::unique_ptr RadosBucket::get_object(const rgw_obj_key& k) -- 2.39.5