From efdaa930d2a8fa110ded97068d02a8a247f0b08f Mon Sep 17 00:00:00 2001 From: John Spray Date: Thu, 24 Sep 2015 13:10:46 +0100 Subject: [PATCH] mds: fix error reformatting subtreemap_test events Rare outside of vstart clusters, but if someone did ever have one of these events in their journal and try to update to latest ceph, they would end up with bogus expire_pos on the reformatted events. Signed-off-by: John Spray --- src/mds/MDLog.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index 396170ef7ae..43cdc485035 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -1100,9 +1100,11 @@ void MDLog::_reformat_journal(JournalPointer const &jp_in, Journaler *old_journa // Zero-out expire_pos in subtreemap because offsets have changed // (expire_pos is just an optimization so it's safe to eliminate it) - if (le->get_type() == EVENT_SUBTREEMAP) { - dout(20) << __func__ << " zeroing expire_pos in subtreemap event at " << le_pos << dendl; + if (le->get_type() == EVENT_SUBTREEMAP + || le->get_type() == EVENT_SUBTREEMAP_TEST) { ESubtreeMap *sle = dynamic_cast(le); + dout(20) << __func__ << " zeroing expire_pos in subtreemap event at " + << le_pos << " seq=" << sle->event_seq << dendl; assert(sle != NULL); sle->expire_pos = 0; modified = true;