From: Casey Bodley Date: Thu, 17 Sep 2020 23:26:51 +0000 (-0400) Subject: rgw: ETagVerifier_MPU takes existing offset vector X-Git-Tag: v15.2.9~47^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=69a9c185b8fe6e4535a441f63cc028cf9195efd2;p=ceph.git rgw: ETagVerifier_MPU takes existing offset vector Signed-off-by: Casey Bodley (cherry picked from commit 2c1934bd3746697249b95b3f79f4c05425d7b40e) --- diff --git a/src/rgw/rgw_etag_verifier.h b/src/rgw/rgw_etag_verifier.h index 560d54805af5..418c695f2b6d 100644 --- a/src/rgw/rgw_etag_verifier.h +++ b/src/rgw/rgw_etag_verifier.h @@ -60,12 +60,15 @@ class RGWPutObj_ETagVerifier_MPU : public RGWPutObj_ETagVerifier void process_end_of_MPU_part(); public: - RGWPutObj_ETagVerifier_MPU(CephContext* cct_, rgw::putobj::DataProcessor *next) - : RGWPutObj_ETagVerifier(cct_, next) {} + RGWPutObj_ETagVerifier_MPU(CephContext* cct, + std::vector part_ofs, + rgw::putobj::DataProcessor *next) + : RGWPutObj_ETagVerifier(cct, next), + part_ofs(std::move(part_ofs)) + {} int process(bufferlist&& data, uint64_t logical_offset) override; void calculate_etag() override; - void append_part_ofs(uint64_t ofs) { part_ofs.emplace_back(ofs); } }; /* RGWPutObj_ETagVerifier_MPU */ diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 8309804eb42e..4b31836c3c9d 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3365,9 +3365,8 @@ public: etag_verifier_atomic = boost::in_place(cct, filter); filter = &*etag_verifier_atomic; } else { - obj_type = OBJ_TYPE_MPU; - etag_verifier_mpu = boost::in_place(cct, filter); uint64_t cur_part_ofs = UINT64_MAX; + std::vector part_ofs; /* * We must store the offset of each part to calculate the ETAGs for each @@ -3379,8 +3378,11 @@ public: continue; cur_part_ofs = mi.get_part_ofs(); ldout(cct, 20) << "MPU Part offset:" << cur_part_ofs << dendl; - etag_verifier_mpu->append_part_ofs(cur_part_ofs); + part_ofs.push_back(cur_part_ofs); } + + obj_type = OBJ_TYPE_MPU; + etag_verifier_mpu = boost::in_place(cct, std::move(part_ofs), filter); filter = &*etag_verifier_mpu; } }