]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: fetch_remote_obj() preserves RGW_ATTR_COMPRESSION of encrypted objects 52247/head
authorCasey Bodley <cbodley@redhat.com>
Wed, 28 Jun 2023 18:57:49 +0000 (14:57 -0400)
committerCasey Bodley <cbodley@redhat.com>
Wed, 28 Jun 2023 19:19:19 +0000 (15:19 -0400)
if the source object was both compressed and encrypted, preserve its
original compression attribute so it can be decompressed the same way it
was originally compressed

Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/driver/rados/rgw_rados.cc

index b09021379d267a08a7ddb54831cc662292d25367..8135ae683ff781b907a44eab01676127de50c9a5 100644 (file)
@@ -3402,8 +3402,12 @@ public:
         try_etag_verify = false;
       }
 
+      // if the object is both compressed and encrypted, it was transferred
+      // in its encrypted+compressed form. we need to preserve the original
+      // RGW_ATTR_COMPRESSION instead of falling back to default compression
+      // settings
       auto iter = src_attrs.find(RGW_ATTR_COMPRESSION);
-      if (iter != src_attrs.end()) {
+      if (iter != src_attrs.end() && !encrypted) {
         const bufferlist bl = std::move(iter->second);
         src_attrs.erase(iter); // don't preserve source compression info