]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: don't reuse s->bucket_instance_id for src_bucket
authorCasey Bodley <cbodley@redhat.com>
Thu, 23 Mar 2023 18:49:09 +0000 (14:49 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 23 Mar 2023 18:56:42 +0000 (14:56 -0400)
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 <cbodley@redhat.com>
src/rgw/rgw_op.cc

index b7810e94592eae9c0d6eb818e32896f9ef41d8f2..d607f1582ec75ae198045589ce72b16c10e9d783 100644 (file)
@@ -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<rgw::sal::Bucket> 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;