diff --git a/[refs] b/[refs] index c6c0473146d6..ee7cc0e8ddab 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ed0552a1a21d2f2692b84c366ce04ad17377780c +refs/heads/master: cb170a22153730eb9c82b6c85ead2001dba6c41a diff --git a/trunk/fs/ceph/mds_client.c b/trunk/fs/ceph/mds_client.c index 462602ec7fb1..552b934c9cd0 100644 --- a/trunk/fs/ceph/mds_client.c +++ b/trunk/fs/ceph/mds_client.c @@ -2470,6 +2470,21 @@ static void check_new_map(struct ceph_mds_client *mdsc, wake_up_session_caps(s, 1); } } + + for (i = 0; i < newmap->m_max_mds && i < mdsc->max_sessions; i++) { + s = mdsc->sessions[i]; + if (!s) + continue; + if (!ceph_mdsmap_is_laggy(newmap, i)) + continue; + if (s->s_state == CEPH_MDS_SESSION_OPEN || + s->s_state == CEPH_MDS_SESSION_HUNG || + s->s_state == CEPH_MDS_SESSION_CLOSING) { + dout(" connecting to export targets of laggy mds%d\n", + i); + __open_export_target_sessions(mdsc, s); + } + } }