diff options
author | Sage Weil <sage@inktank.com> | 2013-06-02 18:07:34 -0700 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2013-06-02 18:08:11 -0700 |
commit | eb6d5fcf994d2a25304827d7384eee58f40939af (patch) | |
tree | 2f5a0b81d316f6ed08027338872e8c8d6746836f | |
parent | d7e2ab1451e284cd4273cca47eec75e1d323f113 (diff) | |
download | ceph-eb6d5fcf994d2a25304827d7384eee58f40939af.tar.gz |
os/LevelDBStore: fix merge loop
We were double-incrementing p, both in the for statement and in the
body. While we are here, drop the unnecessary else's.
Signed-off-by: Sage Weil <sage@inktank.com>
-rw-r--r-- | src/os/LevelDBStore.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/os/LevelDBStore.cc b/src/os/LevelDBStore.cc index 4e4e0e5c177..0b1ea5c1913 100644 --- a/src/os/LevelDBStore.cc +++ b/src/os/LevelDBStore.cc @@ -229,26 +229,27 @@ void LevelDBStore::compact_range_async(const string& start, const string& end) // try to merge adjacent ranges. this is O(n), but the queue should // be short. note that we do not cover all overlap cases and merge // opportunities here, but we capture the ones we currently need. - list< pair<string,string> >::iterator p; - for (p = compact_queue.begin(); p != compact_queue.end(); ++p) { + list< pair<string,string> >::iterator p = compact_queue.begin(); + while (p != compact_queue.end()) { if (p->first == start && p->second == end) { // dup; no-op return; - } else if (p->first <= end && p->first > start) { + } + if (p->first <= end && p->first > start) { // merge with existing range to the right compact_queue.push_back(make_pair(start, p->second)); compact_queue.erase(p); logger->inc(l_leveldb_compact_queue_merge); break; - } else if (p->second >= start && p->second < end) { + } + if (p->second >= start && p->second < end) { // merge with existing range to the left compact_queue.push_back(make_pair(p->first, end)); compact_queue.erase(p); logger->inc(l_leveldb_compact_queue_merge); break; - } else { - ++p; } + ++p; } if (p == compact_queue.end()) { // no merge, new entry. |