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: v14.2.8~78^2~10^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F32824%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 - comment is slightly different in nautilus - nautilus does not have "if (*is_truncated && count < num_entries)" conditional block --- diff --git a/src/rgw/rgw_rados.cc b/src/rgw/rgw_rados.cc index 095af8d5cf4c..cf590e5bee87 100644 --- a/src/rgw/rgw_rados.cc +++ b/src/rgw/rgw_rados.cc @@ -9145,10 +9145,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; @@ -9204,8 +9205,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; }