From cb170a22153730eb9c82b6c85ead2001dba6c41a Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 21 Jun 2010 13:38:35 -0700 Subject: [PATCH] ceph: connect to export targets if mds is laggy If an MDS we are talking to may have failed, we need to open sessions to its potential export targets to ensure that any in-progress migration that may have involved some of our caps is properly handled. Signed-off-by: Sage Weil --- fs/ceph/mds_client.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/fs/ceph/mds_client.c b/fs/ceph/mds_client.c index 462602ec7fb1..552b934c9cd0 100644 --- a/fs/ceph/mds_client.c +++ b/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); + } + } }