From: Sage Weil Date: Mon, 25 Apr 2011 18:44:14 +0000 (-0700) Subject: mds: only move the journaler expire_pos forward X-Git-Tag: v0.27.1~9 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e8847b2cddbadf4f31972b490d80944dcb9f992d;p=ceph.git mds: only move the journaler expire_pos forward We were seeing weird trim errors because expire_pos was getting moved backwards after a standby-replay -> replay transition. Make sure the two places that update the expire_pos only move it forward--never backward. Fixes: #1023 Signed-off-by: Sage Weil --- diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index b5e27b876a64..09cfdce7eb42 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -394,7 +394,9 @@ void MDLog::_expired(LogSegment *ls) expired_segments.erase(ls); num_events -= ls->num_events; - journaler->set_expire_pos(ls->offset); // this was the oldest segment, adjust expire pos + // this was the oldest segment, adjust expire pos + if (journaler->get_expire_pos() < ls->offset) + journaler->set_expire_pos(ls->offset); logger->set(l_mdl_expos, ls->offset); logger->inc(l_mdl_segtrm); diff --git a/src/mds/journal.cc b/src/mds/journal.cc index 814fd8d2cad4..09dac9fd8fac 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -1050,6 +1050,7 @@ void ESubtreeMap::replay(MDS *mds) { if (expire_pos && expire_pos > mds->mdlog->journaler->get_expire_pos()) mds->mdlog->journaler->set_expire_pos(expire_pos); + // suck up the subtree map? if (mds->mdcache->is_subtrees()) { dout(10) << "ESubtreeMap.replay -- ignoring, already have import map" << dendl;