From: Jos Collin Date: Fri, 23 Jun 2023 06:16:26 +0000 (+0530) Subject: mds: MDLog::_recovery_thread: handle the errors gracefully X-Git-Tag: v19.0.0~859^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=d562905dcfb5b8a45ce7042c543720ef8b0fa05b;p=ceph-ci.git mds: MDLog::_recovery_thread: handle the errors gracefully A write fails if the MDS is already blocklisted due to the 'fs fail' issued by the qa tests. Handle those write failures gracefully, even when the MDS is stopping. Fixes: https://tracker.ceph.com/issues/61201 Signed-off-by: Jos Collin --- diff --git a/src/mds/MDLog.cc b/src/mds/MDLog.cc index 337c1025a3c..b1c8b22d8c4 100644 --- a/src/mds/MDLog.cc +++ b/src/mds/MDLog.cc @@ -977,8 +977,14 @@ void MDLog::_recovery_thread(MDSContext *completion) inodeno_t const default_log_ino = MDS_INO_LOG_OFFSET + mds->get_nodeid(); jp.front = default_log_ino; int write_result = jp.save(mds->objecter); - // Nothing graceful we can do for this - ceph_assert(write_result >= 0); + if (write_result < 0) { + std::lock_guard l(mds->mds_lock); + if (mds->is_daemon_stopping()) { + return; + } + mds->damaged(); + ceph_abort(); // damaged should never return + } } else if (read_result == -CEPHFS_EBLOCKLISTED) { derr << "Blocklisted during JournalPointer read! Respawning..." << dendl; mds->respawn();