]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd: trivial optimization 6518/head
authorLi Wang <li.wang@kylin-cloud.com>
Tue, 10 Nov 2015 09:01:47 +0000 (17:01 +0800)
committerLi Wang <li.wang@kylin-cloud.com>
Tue, 10 Nov 2015 09:07:33 +0000 (17:07 +0800)
Signed-off-by: Li Wang <li.wang@kylin-cloud.com>
src/osd/PG.cc

index 8a50060e61790328bab2b6b9e24b8bd3ba5b713b..ad51c86b05d64d3280f94b2b79bc5d7d5a9322bf 100644 (file)
@@ -4026,12 +4026,14 @@ void PG::chunky_scrub(ThreadPool::TPHandle &handle)
 
         // walk the log to find the latest update that affects our chunk
         scrubber.subset_last_update = pg_log.get_tail();
-        for (list<pg_log_entry_t>::const_iterator p = pg_log.get_log().log.begin();
-             p != pg_log.get_log().log.end();
+        for (list<pg_log_entry_t>::const_reverse_iterator p = pg_log.get_log().log.rbegin();
+             p != pg_log.get_log().log.rend();
              ++p) {
           if (cmp(p->soid, scrubber.start, get_sort_bitwise()) >= 0 &&
-             cmp(p->soid, scrubber.end, get_sort_bitwise()) < 0)
+             cmp(p->soid, scrubber.end, get_sort_bitwise()) < 0) {
             scrubber.subset_last_update = p->version;
+            break;
+          }
         }
 
         // ask replicas to wait until last_update_applied >= scrubber.subset_last_update and then scan