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: v14.2.13~2^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=c3e22f0614883b58a3d84cc5f9df73964670ef24;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 (cherry picked from commit bd6f163f366753e8ec42b85a53334f4bf78916bd) --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 48b586608b09..64697e111c29 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -2440,13 +2440,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(); @@ -2671,13 +2671,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();