summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/osdc/Journaler.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/osdc/Journaler.cc b/src/osdc/Journaler.cc
index ba4ca8dc4b9..badfb3c54e8 100644
--- a/src/osdc/Journaler.cc
+++ b/src/osdc/Journaler.cc
@@ -405,12 +405,17 @@ void Journaler::_finish_flush(int r, uint64_t start, utime_t stamp)
}
// adjust safe_pos
- assert(pending_safe.count(start));
- pending_safe.erase(start);
- if (pending_safe.empty())
- safe_pos = flush_pos;
- else
- safe_pos = *pending_safe.begin();
+ std::set<uint64_t>::iterator start_iter = pending_safe.find(start);
+ assert(start_iter != pending_safe.end());
+ if (start_iter == pending_safe.begin()) {
+ pending_safe.erase(start_iter);
+ if (pending_safe.empty())
+ safe_pos = flush_pos;
+ else
+ safe_pos = *pending_safe.begin();
+ } else {
+ pending_safe.erase(start_iter);
+ }
ldout(cct, 10) << "_finish_flush safe from " << start
<< ", pending_safe " << pending_safe