]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: get layout rest op: fix last tail object size
authorYehuda Sadeh <yehuda@redhat.com>
Mon, 7 Jan 2019 23:56:46 +0000 (15:56 -0800)
committerYehuda Sadeh <yehuda@redhat.com>
Mon, 7 Jan 2019 23:56:46 +0000 (15:56 -0800)
This triggered an issue in ragweed

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
src/rgw/rgw_rest_s3.cc

index 2f4c532820390837a773994ae21853934c1657a0..1e6725e0c5e1b9ea13457a2d0fc66020c75bdb53 100644 (file)
@@ -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);
   }