From 909b92e812c7bce70c8d5202fb2f6099f02a26eb Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Wed, 28 Nov 2012 21:21:15 -0800 Subject: [PATCH] mds: assert segements not emtpy in get_current_segment() Only one caller can tolerate no segments; make a new peek_current_segment() for them. Motivated by paranoia tracking down a crash during client unmount, but it wasn't this. Signed-off-by: Sage Weil --- src/mds/MDLog.cc | 2 +- src/mds/MDLog.h | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index b02c1810cfc91..4284b6dfdf1b9 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -415,7 +415,7 @@ void MDLog::_expired(LogSegment *ls) { dout(5) << "_expired segment " << ls->offset << " " << ls->num_events << " events" << dendl; - if (!capped && ls == get_current_segment()) { + if (!capped && ls == peek_current_segment()) { dout(5) << "_expired not expiring " << ls->offset << ", last one and !capped" << dendl; } else { // expired. diff --git a/src/mds/MDLog.h b/src/mds/MDLog.h index 2e049e8aed407..9a547f0d79156 100644 --- a/src/mds/MDLog.h +++ b/src/mds/MDLog.h @@ -161,8 +161,14 @@ public: // -- segments -- void start_new_segment(Context *onsync=0); + + LogSegment *peek_current_segment() { + return segments.empty() ? NULL : segments.rbegin()->second; + } + LogSegment *get_current_segment() { - return segments.empty() ? 0:segments.rbegin()->second; + assert(!segments.empty()); + return segments.rbegin()->second; } LogSegment *get_segment(uint64_t off) { -- 2.39.5