From: J. Eric Ivancich Date: Tue, 6 Oct 2020 16:42:22 +0000 (-0400) Subject: rgw: fix setting of namespace in ordered and unordered bucket listing X-Git-Tag: v16.1.0~890^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=bd6f163f366753e8ec42b85a53334f4bf78916bd;p=ceph.git rgw: fix setting of namespace in ordered and unordered bucket listing The namespace is not always set correctly during bucket listing. This can, for example, cause the listing of incomplete multipart uploads, which are in the _multipart_ namespace, to not paginate correctly, and cause entries to be re-listed. Signed-off-by: J. Eric Ivancich --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index d3005c317c2d..8e17d53c59df 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -1785,13 +1785,13 @@ int RGWRados::Bucket::List::list_objects_ordered( // or it will be empty; either way it's OK to copy rgw_obj_key marker_obj(params.marker.name, params.marker.instance, - params.marker.ns); + params.ns.empty() ? params.marker.ns : params.ns); rgw_obj_index_key cur_marker; marker_obj.get_index_key(&cur_marker); rgw_obj_key end_marker_obj(params.end_marker.name, params.end_marker.instance, - params.end_marker.ns); + params.ns.empty() ? params.end_marker.ns : params.ns); rgw_obj_index_key cur_end_marker; end_marker_obj.get_index_key(&cur_end_marker); const bool cur_end_marker_valid = !params.end_marker.empty(); @@ -2070,13 +2070,13 @@ int RGWRados::Bucket::List::list_objects_unordered(int64_t max_p, // or it will be empty; either way it's OK to copy rgw_obj_key marker_obj(params.marker.name, params.marker.instance, - params.marker.ns); + params.ns.empty() ? params.marker.ns : params.ns); rgw_obj_index_key cur_marker; marker_obj.get_index_key(&cur_marker); rgw_obj_key end_marker_obj(params.end_marker.name, params.end_marker.instance, - params.end_marker.ns); + params.ns.empty() ? params.end_marker.ns : params.ns); rgw_obj_index_key cur_end_marker; end_marker_obj.get_index_key(&cur_end_marker); const bool cur_end_marker_valid = !params.end_marker.empty();