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: v19.0.0~1467^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=59aee614dc33c6b14585cdbc99de6767cb1d72a4;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 --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index b7810e94592e..d607f1582ec7 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -488,10 +488,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); @@ -511,7 +510,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; @@ -5234,10 +5233,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;