From: Casey Bodley Date: Wed, 3 Jul 2024 14:02:55 +0000 (+0100) Subject: Merge pull request #57060 from awojno-bloomberg/wip-awojno-status-header X-Git-Tag: v20.0.0~1605 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=cdc2779dae87082a074c0a11f90f236b612d4dac;p=ceph.git Merge pull request #57060 from awojno-bloomberg/wip-awojno-status-header rgw: implement x-amz-replication-status for PENDING & COMPLETED Reviewed-by: Shilpa Jagannath Reviewed-by: Casey Bodley --- cdc2779dae87082a074c0a11f90f236b612d4dac diff --cc src/rgw/driver/d4n/rgw_sal_d4n.cc index 7c6d10f5af8f3,bd315c50cb1b4..0f3c0ddb224fa --- a/src/rgw/driver/d4n/rgw_sal_d4n.cc +++ b/src/rgw/driver/d4n/rgw_sal_d4n.cc @@@ -110,8 -110,107 +110,8 @@@ int D4NFilterBucket::create(const DoutP return next->create(dpp, params, y); } -int D4NFilterObject::copy_object(const ACLOwner& owner, - const rgw_user& remote_user, - req_info* info, - const rgw_zone_id& source_zone, - rgw::sal::Object* dest_object, - rgw::sal::Bucket* dest_bucket, - rgw::sal::Bucket* src_bucket, - const rgw_placement_rule& dest_placement, - ceph::real_time* src_mtime, - ceph::real_time* mtime, - const ceph::real_time* mod_ptr, - const ceph::real_time* unmod_ptr, - bool high_precision_time, - const char* if_match, - const char* if_nomatch, - AttrsMod attrs_mod, - bool copy_if_newer, - Attrs& attrs, - RGWObjCategory category, - uint64_t olh_epoch, - boost::optional delete_at, - std::string* version_id, - std::string* tag, - std::string* etag, - void (*progress_cb)(off_t, void *), - void* progress_data, - const DoutPrefixProvider* dpp, - optional_yield y) -{ - rgw::d4n::CacheObj obj = rgw::d4n::CacheObj{ - .objName = this->get_key().get_oid(), - .bucketName = src_bucket->get_name() - }; - - if (driver->get_obj_dir()->copy(&obj, dest_object->get_name(), dest_bucket->get_name(), y) < 0) - ldpp_dout(dpp, 10) << "D4NFilterObject::" << __func__ << "(): BlockDirectory copy method failed." << dendl; - - /* Append additional metadata to attributes */ - rgw::sal::Attrs baseAttrs = this->get_attrs(); - buffer::list bl; - - bl.append(to_iso_8601(*mtime)); - baseAttrs.insert({"mtime", bl}); - bl.clear(); - - if (version_id != NULL) { - bl.append(*version_id); - baseAttrs.insert({"version_id", bl}); - bl.clear(); - } - - if (!etag->empty()) { - bl.append(*etag); - baseAttrs.insert({"etag", bl}); - bl.clear(); - } - - if (attrs_mod == rgw::sal::ATTRSMOD_REPLACE) { /* Replace */ - rgw::sal::Attrs::iterator iter; - - for (const auto& pair : attrs) { - iter = baseAttrs.find(pair.first); - - if (iter != baseAttrs.end()) { - iter->second = pair.second; - } else { - baseAttrs.insert({pair.first, pair.second}); - } - } - } else if (attrs_mod == rgw::sal::ATTRSMOD_MERGE) { /* Merge */ - baseAttrs.insert(attrs.begin(), attrs.end()); - } - - /* - int copy_attrsReturn = driver->get_cache_driver()->copy_attrs(this->get_key().get_oid(), dest_object->get_key().get_oid(), &baseAttrs); - - if (copy_attrsReturn < 0) { - ldpp_dout(dpp, 20) << "D4N Filter: Cache copy attributes operation failed." << dendl; - } else { - int copy_dataReturn = driver->get_cache_driver()->copy_data(this->get_key().get_oid(), dest_object->get_key().get_oid()); - - if (copy_dataReturn < 0) { - ldpp_dout(dpp, 20) << "D4N Filter: Cache copy data operation failed." << dendl; - } else { - ldpp_dout(dpp, 20) << "D4N Filter: Cache copy object operation succeeded." << dendl; - } - }*/ - - return next->copy_object(owner, remote_user, info, source_zone, - nextObject(dest_object), - nextBucket(dest_bucket), - nextBucket(src_bucket), - dest_placement, src_mtime, mtime, - mod_ptr, unmod_ptr, high_precision_time, if_match, - if_nomatch, attrs_mod, copy_if_newer, attrs, - category, olh_epoch, delete_at, version_id, tag, - etag, progress_cb, progress_data, dpp, y); -} - int D4NFilterObject::set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs, - Attrs* delattrs, optional_yield y) + Attrs* delattrs, optional_yield y, uint32_t flags) { if (setattrs != NULL) { /* Ensure setattrs and delattrs do not overlap */ diff --cc src/rgw/driver/d4n/rgw_sal_d4n.h index 2eff3cb18a311,3d3a1125e0279..5c71582406f14 --- a/src/rgw/driver/d4n/rgw_sal_d4n.h +++ b/src/rgw/driver/d4n/rgw_sal_d4n.h @@@ -177,9 -177,25 +177,9 @@@ class D4NFilterObject : public FilterOb driver(_driver) {} virtual ~D4NFilterObject() = default; - virtual int copy_object(const ACLOwner& owner, - const rgw_user& remote_user, - req_info* info, const rgw_zone_id& source_zone, - rgw::sal::Object* dest_object, rgw::sal::Bucket* dest_bucket, - rgw::sal::Bucket* src_bucket, - const rgw_placement_rule& dest_placement, - ceph::real_time* src_mtime, ceph::real_time* mtime, - const ceph::real_time* mod_ptr, const ceph::real_time* unmod_ptr, - bool high_precision_time, - const char* if_match, const char* if_nomatch, - AttrsMod attrs_mod, bool copy_if_newer, Attrs& attrs, - RGWObjCategory category, uint64_t olh_epoch, - boost::optional delete_at, - std::string* version_id, std::string* tag, std::string* etag, - void (*progress_cb)(off_t, void *), void* progress_data, - const DoutPrefixProvider* dpp, optional_yield y) override; virtual const std::string &get_name() const override { return next->get_name(); } virtual int set_obj_attrs(const DoutPrefixProvider* dpp, Attrs* setattrs, - Attrs* delattrs, optional_yield y) override; + Attrs* delattrs, optional_yield y, uint32_t flags) override; virtual int get_obj_attrs(optional_yield y, const DoutPrefixProvider* dpp, rgw_obj* target_obj = NULL) override; virtual int modify_obj_attrs(const char* attr_name, bufferlist& attr_val,