From d0f8426615a7a090b1e0d0eabb4b084def50ce83 Mon Sep 17 00:00:00 2001 From: Dhairya Parmar Date: Tue, 22 Aug 2023 15:52:42 +0530 Subject: [PATCH] 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 --- src/mds/journal.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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); } -- 2.47.3