]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
cls/rgw: make usage_iterate_range()'s "truncated" parameter trustworthy 20730/head
authorGreg Farnum <gfarnum@redhat.com>
Tue, 6 Mar 2018 00:40:41 +0000 (16:40 -0800)
committerGreg Farnum <gfarnum@redhat.com>
Tue, 6 Mar 2018 18:33:38 +0000 (10:33 -0800)
Set it to false whenever we identify that we've reached the end of our
range, even if the underlying OSD op says it could have given us more
results. Then rely on that instead of weird iter-based logic to tell
our client that it doesn't need to do more work.

Fixes: https://tracker.ceph.com/issues/22963
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
src/cls/rgw/cls_rgw.cc

index d55576f008ec715254f85dd76301e1f0f4c3d3ef..0d5d36736e997fb3b75197ae97b9865f29762964 100644 (file)
@@ -2954,12 +2954,18 @@ static int usage_iterate_range(cls_method_context_t hctx, uint64_t start, uint64
 
     if (!by_user && key.compare(end_key) >= 0) {
       CLS_LOG(20, "usage_iterate_range reached key=%s, done", key.c_str());
+      if (truncated) {
+       *truncated = false;
+      }
       key_iter = key;
       return 0;
     }
 
     if (by_user && key.compare(0, user_key.size(), user_key) != 0) {
       CLS_LOG(20, "usage_iterate_range reached key=%s, done", key.c_str());
+      if (truncated) {
+       *truncated = false;
+      }
       key_iter = key;
       return 0;
     }
@@ -3076,7 +3082,7 @@ int rgw_user_usage_log_trim(cls_method_context_t hctx, bufferlist *in, bufferlis
   if (ret < 0)
     return ret;
 
-  if (!more && iter.empty())
+  if (!more)
     return -ENODATA;
 
   return 0;