From 6fd052818252df2bd0ec2f1e3d82d383f4702934 Mon Sep 17 00:00:00 2001 From: yuliyang_yewu Date: Fri, 21 May 2021 07:30:50 +0800 Subject: [PATCH] rgw: RGWListMultipart show Owner ID and DisplayName fix https://tracker.ceph.com/issues/48262 Signed-off-by: yuliyang_yewu --- src/rgw/rgw_op.cc | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/rgw/rgw_op.cc b/src/rgw/rgw_op.cc index f39645fdde6..c014ccda8a3 100644 --- a/src/rgw/rgw_op.cc +++ b/src/rgw/rgw_op.cc @@ -400,8 +400,9 @@ static int get_multipart_info(const DoutPrefixProvider *dpp, struct req_state *s } static int get_multipart_info(const DoutPrefixProvider *dpp, struct req_state *s, - const string& meta_oid, - multipart_upload_info *upload_info) + const string& meta_oid, + multipart_upload_info *upload_info, + rgw::sal::Attrs* attrs = nullptr) { map::iterator iter; bufferlist header; @@ -410,7 +411,11 @@ static int get_multipart_info(const DoutPrefixProvider *dpp, struct req_state *s meta_obj = s->bucket->get_object(rgw_obj_key(meta_oid, string(), mp_ns)); meta_obj->set_in_extra_data(true); - return get_multipart_info(dpp, s, meta_obj.get(), upload_info); + int ret = get_multipart_info(dpp, s, meta_obj.get(), upload_info); + if (ret >= 0 && attrs) { + *attrs = meta_obj->get_attrs(); + } + return ret; } static int read_bucket_policy(const DoutPrefixProvider *dpp, @@ -6261,7 +6266,19 @@ void RGWListMultipart::execute(optional_yield y) mp.init(s->object->get_name(), upload_id); meta_oid = mp.get_meta(); - op_ret = get_multipart_info(this, s, meta_oid, nullptr); + rgw::sal::Attrs attrs; + op_ret = get_multipart_info(this, s, meta_oid, nullptr, &attrs); + /* decode policy */ + map::iterator iter = attrs.find(RGW_ATTR_ACL); + if (iter != attrs.end()) { + auto bliter = iter->second.cbegin(); + try { + policy.decode(bliter); + } catch (buffer::error& err) { + ldpp_dout(this, 0) << "ERROR: could not decode policy, caught buffer::error" << dendl; + op_ret = -EIO; + } + } if (op_ret < 0) return; -- 2.39.5