From: Casey Bodley Date: Wed, 28 Jun 2023 18:57:49 +0000 (-0400) Subject: rgw: fetch_remote_obj() preserves RGW_ATTR_COMPRESSION of encrypted objects X-Git-Tag: v19.0.0~944^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b91ff3fd86f52f7148daf7f9acc9864752186ce0;p=ceph.git rgw: fetch_remote_obj() preserves RGW_ATTR_COMPRESSION of encrypted objects 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 --- diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc index b09021379d26..8135ae683ff7 100644 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@ -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