]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
mds: skip journaling blocklisted clients when in `replay` state 43842/head
authorVenky Shankar <vshankar@redhat.com>
Fri, 1 Oct 2021 08:55:40 +0000 (04:55 -0400)
committerVenky Shankar <vshankar@redhat.com>
Thu, 11 Nov 2021 07:11:08 +0000 (12:41 +0530)
commit888aee6226f5a87bc7d5e12038875a39194375bb
treed269cf62231e9ad86cb4c4ba1aa967d97530d7fc
parentb0aaed0fe8cdfe99c82a70b230004934b51091ff
mds: skip journaling blocklisted clients when in `replay` state

When a standby MDS is transitioning to active, it passes through
`replay` state. When the MDS is in this state, there are no journal
segments available for recording journal updates. If the MDS receives
an OSDMap update in this state, journaling blocklisted clients causes
a crash since no journal segments are available. This is a bit hard
to reproduce as it requires correct timing of an OSDMap update along
with various other factors.

Note that, when the MDS reaches `reconnect` state, it will journal
the blocklisted clients anyway.

This partially fixes tracker: https://tracker.ceph.com/issues/51589
which mentions a similar crash but in `reconnect` state. However,
that crash was seen in nautilus.

A couple of minor changes include removing hardcoded function names
and carving out reusable parts into a separate function.

Partially-fixes: https://tracker.ceph.com/issues/51589
Signed-off-by: Venky Shankar <vshankar@redhat.com>
(cherry picked from commit 6d6236dc8d15636af8060057e6e69c26c473f987)

 Conflicts:
src/mds/MDSRank.cc

Trivial conflict: s/blocklist/blacklist/
src/mds/MDSRank.cc
src/mds/MDSRank.h