From ae0f5f03a6839fa34db244aaf0023fbbc86fb393 Mon Sep 17 00:00:00 2001 From: Colin Patrick McCabe Date: Mon, 18 Apr 2011 17:32:16 -0700 Subject: [PATCH] interval_set: slightly better API for erase Signed-off-by: Colin McCabe --- src/include/interval_set.h | 2 +- src/osdc/Journaler.cc | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/include/interval_set.h b/src/include/interval_set.h index 9938a33448b2e..19e178361e852 100644 --- a/src/include/interval_set.h +++ b/src/include/interval_set.h @@ -366,7 +366,7 @@ class interval_set { other._size = t; } - void erase(const iterator i) { + void erase(iterator &i) { _size -= i.get_len(); m.erase(i._iter); } diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc index e1620cf0e6824..cfc6a9e10876f 100644 --- a/src/osdc/Journaler.cc +++ b/src/osdc/Journaler.cc @@ -639,8 +639,9 @@ void Journaler::_prezeroed(int r, uint64_t start, uint64_t len) prezero_pos += len; while (!pending_zero.empty() && pending_zero.begin().get_start() == prezero_pos) { - prezero_pos += pending_zero.begin().get_len(); - pending_zero.erase(pending_zero.begin()); + interval_set::iterator b(pending_zero.begin()); + prezero_pos += b.get_len(); + pending_zero.erase(b); } if (waiting_for_zero) { -- 2.39.5