failure while removing used_preallocated_ino from session's prealloc_inos
set leads to backtrace pointing to interval_set:
interval_set<inodeno_t, std::map>::erase(inodeno_t, inodeno_t, std::function<bool (inodeno_t, inodeno_t)>)
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 <dparmar@redhat.com>
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);
}