From: Dhairya Parmar Date: Tue, 22 Aug 2023 10:22:42 +0000 (+0530) Subject: mds/journal: make used_preallocated_ino crash more graceful X-Git-Tag: v19.3.0~210^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=refs%2Fpull%2F53080%2Fhead;p=ceph.git mds/journal: make used_preallocated_ino crash more graceful failure while removing used_preallocated_ino from session's prealloc_inos set leads to backtrace pointing to interval_set: interval_set::erase(inodeno_t, inodeno_t, std::function) EMetaBlob::replay(MDSRank*, LogSegment*, MDPeerUpdate*) EUpdate::replay(MDSRank*) MDLog::_replay_thread() MDLog::ReplayThread::entry() which is cumbersome to debug, while the actual root cause is still a WIP, make the crash more graceful so that it helps while debugging. Signed-off-by: Dhairya Parmar --- diff --git a/src/mds/journal.cc b/src/mds/journal.cc index f9eb8a1eecf..e080b117610 100644 --- a/src/mds/journal.cc +++ b/src/mds/journal.cc @@ -1620,8 +1620,9 @@ void EMetaBlob::replay(MDSRank *mds, LogSegment *logseg, int type, MDPeerUpdate if (used_preallocated_ino) { if (!session->info.prealloc_inos.empty()) { inodeno_t ino = session->take_ino(used_preallocated_ino); - session->info.prealloc_inos.erase(ino); + dout(5) "received ino " << ino << " from the session" << dendl; ceph_assert(ino == used_preallocated_ino); + session->info.prealloc_inos.erase(ino); } mds->sessionmap.replay_dirty_session(session); }