From: Raja Sharma Date: Tue, 21 Jan 2025 09:55:59 +0000 (+0530) Subject: RGW:fix obj by multipart upload cant get tag X-Git-Tag: v20.0.0~294^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=3e2332db84854838abd8edc9de3b27c676dbf431;p=ceph.git RGW:fix obj by multipart upload cant get tag Fixes: https://tracker.ceph.com/issues/53016 Signed-off-by: Raja Sharma --- diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index d6f846b0d2f7c..0095395237c96 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -6649,6 +6649,9 @@ void RGWInitMultipart::execute(optional_yield y) return; } + encode_obj_tags_attr(obj_tags, attrs); + rgw_cond_decode_objtags(s, attrs); + std::unique_ptr upload; upload = s->bucket->get_multipart_upload(s->object->get_name(), upload_id); diff --git a/src/rgw/rgw_op.h b/src/rgw/rgw_op.h index dcf64c31572e0..cbe441c140bfd 100644 --- a/src/rgw/rgw_op.h +++ b/src/rgw/rgw_op.h @@ -1904,6 +1904,7 @@ public: class RGWInitMultipart : public RGWOp { protected: + RGWObjTags obj_tags; std::string upload_id; RGWAccessControlPolicy policy; ceph::real_time mtime; diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 885991244a61b..2e806125365a9 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -4334,6 +4334,18 @@ int RGWInitMultipart_ObjStore_S3::get_params(optional_yield y) if (ret < 0) return ret; + auto tag_str = s->info.env->get("HTTP_X_AMZ_TAGGING"); + if(tag_str) { + ret = obj_tags.set_from_string(tag_str); + if (ret < 0) { + ldpp_dout(this, 0) << "setting obj tags failed with " << ret << dendl; + if (ret == -ERR_INVALID_TAG) { + ret = -EINVAL; // s3 returns only -EINVAL for PUT requests + } + return ret; + } + } + //handle object lock auto obj_lock_mode_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_MODE"); auto obj_lock_date_str = s->info.env->get("HTTP_X_AMZ_OBJECT_LOCK_RETAIN_UNTIL_DATE");