On Thu, 2021-07-15 at 14:40 +0100, Luis Henriques wrote: > If MDSs aren't available while mounting a filesystem, the session state will > transition from SESSION_OPENING to SESSION_CLOSING. And in that scenario > check_session_state() will be called from delayed_work() and trigger this > WARN. > > Avoid this by only WARNing after a session has already been established > (i.e., the s_ttl will be different from 0). > > Fixes: 62575e270f66 ("ceph: check session state after bumping session->s_seq") > Signed-off-by: Luis Henriques <lhenriques@xxxxxxx> > --- > fs/ceph/mds_client.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c > index e5af591d3bd4..86f09b1110a2 100644 > --- a/fs/ceph/mds_client.c > +++ b/fs/ceph/mds_client.c > @@ -4468,7 +4468,7 @@ bool check_session_state(struct ceph_mds_session *s) > break; > case CEPH_MDS_SESSION_CLOSING: > /* Should never reach this when we're unmounting */ > - WARN_ON_ONCE(true); > + WARN_ON_ONCE(s->s_ttl); > fallthrough; > case CEPH_MDS_SESSION_NEW: > case CEPH_MDS_SESSION_RESTARTING: Mea culpa -- I've been meaning to fix that up. I'll plan to merge this later today. Thanks! -- Jeff Layton <jlayton@xxxxxxxxxx>