]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: move forward marker even in case of many non-existent indexes 33311/head
authorIlsoo Byun <ilsoobyun@linecorp.com>
Tue, 7 Jan 2020 01:35:53 +0000 (10:35 +0900)
committerNathan Cutler <ncutler@suse.com>
Fri, 14 Feb 2020 11:34:10 +0000 (12:34 +0100)
Signed-off-by: Ilsoo Byun <ilsoobyun@linecorp.com>
(cherry picked from commit 2eaac132d491ef3c6f8cb50c34fc67f56e006c07)

Conflicts:
        src/rgw/rgw_rados.cc
- manual cherry-pick

src/rgw/rgw_rados.cc

index a806be7690cb3467078938f59512bdacc450233d..c5fb71c566c398b5093d7ec6469377dfbe67661a 100644 (file)
@@ -13413,10 +13413,11 @@ int RGWRados::cls_bucket_list_ordered(RGWBucketInfo& bucket_info,
 
   map<string, bufferlist> 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;
 }