]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mds: fix rank 0 marked damaged if stopping fails after Elid flush and log trimmed 65483/head
authorethanwu <ethanwu@synology.com>
Thu, 11 Sep 2025 07:40:09 +0000 (15:40 +0800)
committerethanwu <ethanwu@synology.com>
Fri, 12 Sep 2025 06:49:27 +0000 (14:49 +0800)
commitadb448b4f4e421f75275874f5a67c3a2ceb0214c
tree119ccf87cf92c5c04b318c9f63c1e0218a387b12
parent098432f31463e5e2daa61b096ea90a95d0acf338
mds: fix rank 0 marked damaged if stopping fails after Elid flush and log trimmed

steps to reproduce
 ../src/vstart.sh --debug --new -x --localhost --bluestore
 ./bin/ceph tell mds.<rank 0> config set mds_kill_shutdown_at 10
 ./bin/ceph fs set <fs name> down true

wait for a few seconds and will see the following log from take-over mds
and rank 0 is marked damaged
2025-09-11T16:47:24.591+0800 785dabeaa6c0 -1 log_channel(cluster) log [ERR] : No subtrees found for root MDS rank!
2025-09-11T16:47:24.591+0800 785dabeaa6c0 5 mds.beacon.b set_want_state: up:rejoin -> down:damaged

During shutdown_pass after submitting Elid and trimming mdlog, mds log
will now have only ELid event which does nothing at replay.
After replay, no subtree is found.

Fix this by checking whther MDLog contains only one event.
If so, skip the subtree check for rank 0, and allow it to request
STATE_STOPPED just like the other ranks.

Fixes: https://tracker.ceph.com/issues/72983
Signed-off-by: ethanwu <ethanwu@synology.com>
src/mds/MDSRank.cc