From 70229695ede4184ceeabf46c1b67020123731afa Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Thu, 17 Sep 2020 20:15:11 -0400 Subject: [PATCH] rgw: simplify out SourceObjType Signed-off-by: Casey Bodley (cherry picked from commit 21cc9034410bb6e675b1b04888e1b85e3eb5d71f) --- src/rgw/rgw_etag_verifier.h | 6 ------ src/rgw/rgw_rados.cc | 20 +++++++------------- 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/src/rgw/rgw_etag_verifier.h b/src/rgw/rgw_etag_verifier.h index 418c695f2b6d4..4902e6bb3cedf 100644 --- a/src/rgw/rgw_etag_verifier.h +++ b/src/rgw/rgw_etag_verifier.h @@ -18,12 +18,6 @@ #include "rgw_putobj.h" #include "rgw_op.h" -enum SourceObjType { - OBJ_TYPE_UNINIT, /* Object type is not initialised yet */ - OBJ_TYPE_ATOMIC, - OBJ_TYPE_MPU, /* Object at source was created through MPU */ -}; - class RGWPutObj_ETagVerifier : public rgw::putobj::Pipe { protected: diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index ae3bbad87eb42..81ba2aacfa7f3 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3932,7 +3932,6 @@ class RGWRadosPutObj : public RGWHTTPStreamRWRequest::ReceiveCB std::optional compression_info; uint64_t extra_data_left{0}; bool need_to_process_attrs{true}; - SourceObjType obj_type{OBJ_TYPE_UNINIT}; uint64_t data_len{0}; map src_attrs; uint64_t ofs{0}; @@ -4045,7 +4044,6 @@ public: if (rule.part_size == 0) { /* Atomic object */ - obj_type = OBJ_TYPE_ATOMIC; etag_verifier_atomic = boost::in_place(cct, filter); filter = &*etag_verifier_atomic; } else { @@ -4091,7 +4089,6 @@ public: if (part_ofs.empty()) { try_etag_verify = false; } else { - obj_type = OBJ_TYPE_MPU; etag_verifier_mpu = boost::in_place(cct, std::move(part_ofs), filter); filter = &*etag_verifier_mpu; } @@ -4165,21 +4162,17 @@ public: return data_len; } - string get_calculated_etag() { - if (obj_type == OBJ_TYPE_ATOMIC) { + std::string get_verifier_etag() { + if (etag_verifier_atomic) { etag_verifier_atomic->calculate_etag(); return etag_verifier_atomic->get_calculated_etag(); - } else if (obj_type == OBJ_TYPE_MPU) { + } else if (etag_verifier_mpu) { etag_verifier_mpu->calculate_etag(); return etag_verifier_mpu->get_calculated_etag(); } else { return ""; } } - - SourceObjType get_obj_type() { - return obj_type; - } }; /* @@ -4663,17 +4656,18 @@ int RGWRados::fetch_remote_obj(RGWObjectCtx& obj_ctx, } /* Perform ETag verification is we have computed the object's MD5 sum at our end */ - if (cb.get_obj_type() != OBJ_TYPE_UNINIT) { + if (const auto& verifier_etag = cb.get_verifier_etag(); + !verifier_etag.empty()) { string trimmed_etag = etag; /* Remove the leading and trailing double quotes from etag */ trimmed_etag.erase(std::remove(trimmed_etag.begin(), trimmed_etag.end(),'\"'), trimmed_etag.end()); - if (cb.get_calculated_etag().compare(trimmed_etag)) { + if (verifier_etag != trimmed_etag) { ret = -EIO; ldout(cct, 0) << "ERROR: source and destination objects don't match. Expected etag:" - << trimmed_etag << " Computed etag:" << cb.get_calculated_etag() << dendl; + << trimmed_etag << " Computed etag:" << verifier_etag << dendl; goto set_err_state; } } -- 2.39.5