From 305553eaa65fefcd5f43b60242771b97600a8e21 Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 17 Sep 2020 19:26:51 -0400 Subject: [PATCH] rgw: ETagVerifier_MPU takes existing offset vector Signed-off-by: Casey Bodley (cherry picked from commit 2c1934bd3746697249b95b3f79f4c05425d7b40e) --- src/rgw/rgw_etag_verifier.h | 9 ++++++--- src/rgw/rgw_rados.cc | 8 +++++--- 2 files changed, 11 insertions(+), 6 deletions(-) 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 b3bba1b84469..62cb05837e71 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -4028,9 +4028,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 @@ -4042,8 +4041,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; } } -- 2.47.3