From: Casey Bodley Date: Wed, 12 Jul 2023 20:13:34 +0000 (-0400) Subject: rgw: preserve RGW_ATTR_CRYPT_PARTS of already-replicated objects X-Git-Tag: v18.2.1~361^2~4 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=0f9021d22597457089c4e133f3beb5763a41237e;p=ceph.git rgw: preserve RGW_ATTR_CRYPT_PARTS of already-replicated objects Signed-off-by: Casey Bodley (cherry picked from commit 902d07499df4ed68721821691e0477e673ab15a5) --- diff --git a/src/rgw/driver/rados/rgw_rados.cc b/src/rgw/driver/rados/rgw_rados.cc index c7100af4bb62..37e814bb4531 100644 --- a/src/rgw/driver/rados/rgw_rados.cc +++ b/src/rgw/driver/rados/rgw_rados.cc @@ -3425,9 +3425,11 @@ public: manifest_bl = std::move(iter->second); src_attrs.erase(iter); - // if the source object was encrypted, preserve the original object's - // part lengths - if (src_attrs.count(RGW_ATTR_CRYPT_MODE)) { + // if the source object was encrypted, preserve the part lengths from + // the original object's manifest in RGW_ATTR_CRYPT_PARTS. if the object + // already replicated and has the RGW_ATTR_CRYPT_PARTS attr, preserve it + if (src_attrs.count(RGW_ATTR_CRYPT_MODE) && + !src_attrs.count(RGW_ATTR_CRYPT_PARTS)) { std::vector parts_len; int r = RGWGetObj_BlockDecrypt::read_manifest_parts(dpp, manifest_bl, parts_len);