From: Casey Bodley Date: Thu, 23 Mar 2023 18:49:09 +0000 (-0400) Subject: rgw: don't reuse s->bucket_instance_id for src_bucket X-Git-Tag: v18.1.0~156^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ee362603e3038ed852d8fc1e2e529431855c9b43;p=ceph.git rgw: don't reuse s->bucket_instance_id for src_bucket the bucket_instance_id gets parsed from the "rgwx-bucket-instance" header, and corresponds to the destination bucket. don't reuse it for the src_bucket, whose name either comes from the s3 header "x-amz-copy-source" or the swift header "x-copy-from" Signed-off-by: Casey Bodley (cherry picked from commit 59aee614dc33c6b14585cdbc99de6767cb1d72a4) --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index c8be835533f..238ee2956b2 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -487,10 +487,9 @@ int rgw_build_bucket_policies(const DoutPrefixProvider *dpp, rgw::sal::Driver* d if (!s->src_bucket_name.empty()) { std::unique_ptr src_bucket; ret = driver->get_bucket(dpp, nullptr, - rgw_bucket(s->src_tenant_name, - s->src_bucket_name, - s->bucket_instance_id), - &src_bucket, y); + rgw_bucket_key(s->src_tenant_name, + s->src_bucket_name), + &src_bucket, y); if (ret == 0) { string& zonegroup = src_bucket->get_info().zonegroup; s->local_source = driver->get_zone()->get_zonegroup().equals(zonegroup); @@ -510,7 +509,7 @@ int rgw_build_bucket_policies(const DoutPrefixProvider *dpp, rgw::sal::Driver* d /* This is the only place that s->bucket is created. It should never be * overwritten. */ - ret = driver->get_bucket(dpp, s->user.get(), rgw_bucket(rgw_bucket_key(s->bucket_tenant, s->bucket_name, s->bucket_instance_id)), &s->bucket, y); + ret = driver->get_bucket(dpp, s->user.get(), rgw_bucket(s->bucket_tenant, s->bucket_name, s->bucket_instance_id), &s->bucket, y); if (ret < 0) { if (ret != -ENOENT) { string bucket_log; @@ -5206,10 +5205,9 @@ int RGWCopyObj::verify_permission(optional_yield y) } op_ret = driver->get_bucket(this, s->user.get(), - rgw_bucket(s->src_tenant_name, - s->src_bucket_name, - s->bucket_instance_id), - &src_bucket, y); + rgw_bucket_key(s->src_tenant_name, + s->src_bucket_name), + &src_bucket, y); if (op_ret < 0) { if (op_ret == -ENOENT) { op_ret = -ERR_NO_SUCH_BUCKET;