From: Yehuda Sadeh Date: Mon, 7 Jan 2019 23:56:46 +0000 (-0800) Subject: rgw: get layout rest op: fix last tail object size X-Git-Tag: v14.1.0~314^2~15 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=44fab540cf5f85eabc1a4dc775592e71e86768af;p=ceph.git rgw: get layout rest op: fix last tail object size This triggered an issue in ragweed Signed-off-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 2f4c53282039..1e6725e0c5e1 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -2898,10 +2898,16 @@ void RGWGetObjLayout_ObjStore_S3::send_response() for (auto miter = manifest->obj_begin(); miter != manifest->obj_end(); ++miter) { f.open_object_section("obj"); rgw_raw_obj raw_loc = miter.get_location().get_raw_obj(store); + uint64_t ofs = miter.get_ofs(); + uint64_t left = manifest->get_obj_size() - ofs; ::encode_json("ofs", miter.get_ofs(), &f); ::encode_json("loc", raw_loc, &f); ::encode_json("loc_ofs", miter.location_ofs(), &f); - ::encode_json("loc_size", miter.get_stripe_size(), &f); + uint64_t loc_size = miter.get_stripe_size(); + if (loc_size > left) { + loc_size = left; + } + ::encode_json("loc_size", loc_size, &f); f.close_section(); rgw_flush_formatter(s, &f); }