]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgwlc: correctly dimension lc shard index vector 38824/head
authorMatt Benjamin <mbenjamin@redhat.com>
Tue, 17 Nov 2020 01:20:05 +0000 (20:20 -0500)
committerNathan Cutler <ncutler@suse.com>
Fri, 8 Jan 2021 17:54:18 +0000 (18:54 +0100)
The new parallel lc code relies on a vector of indexes to seed
random-order shard processing.  This vector was dimensioned to
n (the shard count) - 1--which appears to elide the high index.

Found and reported by Ji Weiqiang <badwolflord@163.com>

Fixes: https://tracker.ceph.com/issues/48255
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
(cherry picked from commit 988c35b374260961842bb8e7514a7f5fc7d7767c)

src/rgw/rgw_lc.cc

index 2d6357c83fbbaa8578312379cd7f719f5afc5fc2..bb30bb00cc0fbfef58f5e6ac79dac467c17f2839 100644 (file)
@@ -1655,7 +1655,7 @@ int RGWLC::list_lc_progress(string& marker, uint32_t max_entries,
 
 static inline vector<int> random_sequence(uint32_t n)
 {
-  vector<int> v(n-1, 0);
+  vector<int> v(n, 0);
   std::generate(v.begin(), v.end(),
     [ix = 0]() mutable {
       return ix++;