From: Prasad Krishnan Date: Fri, 20 Mar 2020 20:01:35 +0000 (+0000) Subject: RGW:Multisite: Convert is_mpu_obj into an enum SourceObjType X-Git-Tag: v15.2.9~47^2~8 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=a79d6304d94e895c05bad8f0826873cebdf06ee1;p=ceph.git RGW:Multisite: Convert is_mpu_obj into an enum SourceObjType Signed-off-by: Prasad Krishnan (cherry picked from commit fa5422597837032d97f9afceff8b5a22fad0cda7) --- diff --git a/qa/suites/rgw/multisite/overrides.yaml b/qa/suites/rgw/multisite/overrides.yaml index 54e3db24f24c..c9019e15499c 100644 --- a/qa/suites/rgw/multisite/overrides.yaml +++ b/qa/suites/rgw/multisite/overrides.yaml @@ -13,5 +13,6 @@ overrides: rgw curl low speed time: 300 rgw md log max shards: 4 rgw data log num shards: 4 + rgw sync obj etag verify: true rgw: compression type: random diff --git a/src/rgw/rgw_etag_verifier.h b/src/rgw/rgw_etag_verifier.h index b55f277ed5b2..560d54805af5 100644 --- a/src/rgw/rgw_etag_verifier.h +++ b/src/rgw/rgw_etag_verifier.h @@ -18,6 +18,12 @@ #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 c23c6e2d8c97..e978f083b25d 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -3266,7 +3266,8 @@ class RGWRadosPutObj : public RGWHTTPStreamRWRequest::ReceiveCB void *progress_data; bufferlist extra_data_bl, manifest_bl; uint64_t extra_data_left{0}; - bool need_to_process_attrs{true}, is_mpu_obj{false}; + bool need_to_process_attrs{true}; + SourceObjType obj_type{OBJ_TYPE_UNINIT}; uint64_t data_len{0}; map src_attrs; uint64_t ofs{0}; @@ -3360,10 +3361,11 @@ 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 { - is_mpu_obj = true; + obj_type = OBJ_TYPE_MPU; etag_verifier_mpu = boost::in_place(cct, filter); uint64_t cur_part_ofs = UINT64_MAX; @@ -3451,15 +3453,14 @@ public: } string get_calculated_etag() { - if (!cct->_conf->rgw_sync_obj_etag_verify) - return ""; - - if (is_mpu_obj) { + if (obj_type == OBJ_TYPE_ATOMIC) { + etag_verifier_atomic->calculate_etag(); + return etag_verifier_atomic->get_calculated_etag(); + } else if (obj_type == OBJ_TYPE_MPU) { etag_verifier_mpu->calculate_etag(); return etag_verifier_mpu->get_calculated_etag(); } else { - etag_verifier_atomic->calculate_etag(); - return etag_verifier_atomic->get_calculated_etag(); + return ""; } } };