From: Casey Bodley Date: Wed, 28 Jun 2023 20:49:33 +0000 (-0400) Subject: rgw: BlockDecrypt filter parses manifest parts before construction X-Git-Tag: v19.0.0~746^2~6 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=d8a82f5aaa1a04b695c19b546767718b832559cb;p=ceph.git rgw: BlockDecrypt filter parses manifest parts before construction users now call a static read_manifest_parts() function, and pass the resulting vector into the BlockDecrypt constructor Signed-off-by: Casey Bodley --- diff --git a/src/rgw/rgw_crypt.cc b/src/rgw/rgw_crypt.cc index d2c3edb0d55a..9fdd9819ea17 100644 --- a/src/rgw/rgw_crypt.cc +++ b/src/rgw/rgw_crypt.cc @@ -661,6 +661,7 @@ RGWGetObj_BlockDecrypt::RGWGetObj_BlockDecrypt(const DoutPrefixProvider *dpp, CephContext* cct, RGWGetObj_Filter* next, std::unique_ptr crypt, + std::vector parts_len, optional_yield y) : RGWGetObj_Filter(next), @@ -671,7 +672,8 @@ RGWGetObj_BlockDecrypt::RGWGetObj_BlockDecrypt(const DoutPrefixProvider *dpp, ofs(0), end(0), cache(), - y(y) + y(y), + parts_len(std::move(parts_len)) { block_size = this->crypt->get_block_size(); } @@ -679,8 +681,10 @@ RGWGetObj_BlockDecrypt::RGWGetObj_BlockDecrypt(const DoutPrefixProvider *dpp, RGWGetObj_BlockDecrypt::~RGWGetObj_BlockDecrypt() { } -int RGWGetObj_BlockDecrypt::read_manifest(const DoutPrefixProvider *dpp, bufferlist& manifest_bl) { - parts_len.clear(); +int RGWGetObj_BlockDecrypt::read_manifest_parts(const DoutPrefixProvider *dpp, + const bufferlist& manifest_bl, + std::vector& parts_len) +{ RGWObjManifest manifest; if (manifest_bl.length()) { auto miter = manifest_bl.cbegin(); @@ -697,10 +701,8 @@ int RGWGetObj_BlockDecrypt::read_manifest(const DoutPrefixProvider *dpp, bufferl } parts_len.back() += mi.get_stripe_size(); } - if (cct->_conf->subsys.should_gather()) { - for (size_t i = 0; i