From: Ilsoo Byun Date: Tue, 7 Jan 2020 01:35:53 +0000 (+0900) Subject: rgw: move forward marker even in case of many non-existent indexes X-Git-Tag: v13.2.9~84^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F33311%2Fhead;p=ceph.git rgw: move forward marker even in case of many non-existent indexes Signed-off-by: Ilsoo Byun (cherry picked from commit 2eaac132d491ef3c6f8cb50c34fc67f56e006c07) Conflicts: src/rgw/rgw_rados.cc - manual cherry-pick --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index a806be7690cb..c5fb71c566c3 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -13413,10 +13413,11 @@ int RGWRados::cls_bucket_list_ordered(RGWBucketInfo& bucket_info, map updates; uint32_t count = 0; + int pos = -1; while (count < num_entries && !candidates.empty()) { r = 0; // Select the next one - int pos = candidates.begin()->second; + pos = candidates.begin()->second; const string& name = vcurrents[pos]->first; struct rgw_bucket_dir_entry& dirent = vcurrents[pos]->second; @@ -13472,8 +13473,9 @@ int RGWRados::cls_bucket_list_ordered(RGWBucketInfo& bucket_info, break; } } - if (!m.empty()) - *last_entry = m.rbegin()->first; + + if (pos >= 0) + *last_entry = std::move((--vcurrents[pos])->first); return 0; }