]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
rgw: preserve RGW_ATTR_CRYPT_PARTS of already-replicated objects
authorCasey Bodley <cbodley@redhat.com>
Wed, 12 Jul 2023 20:13:34 +0000 (16:13 -0400)
committerCasey Bodley <cbodley@redhat.com>
Thu, 3 Aug 2023 13:01:11 +0000 (09:01 -0400)
Signed-off-by: Casey Bodley <cbodley@redhat.com>
src/rgw/driver/rados/rgw_rados.cc

index 67f23ebb5d8ff2ac5d86bb0b5bd208f13e020ad9..b357ecbf670c86aac07089cf1e975c99580d275c 100644 (file)
@@ -3434,9 +3434,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<size_t> parts_len;
           int r = RGWGetObj_BlockDecrypt::read_manifest_parts(dpp, manifest_bl,
                                                               parts_len);