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>
(cherry picked from commit
7ea8ca81f7c5ec9d3a6fc627be4f024a17397497)
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;
}
if (ret < 0)
return ret;
- if (!more && iter.empty())
+ if (!more)
return -ENODATA;
return 0;