mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 04:31:50 +00:00
ceph: skip reconnecting if MDS is not ready
When MDS closed the session the kclient will send to reconnect to it immediately, but if the MDS just restarted and still not ready yet, such as still in the up:replay state and the sessionmap journal logs hasn't be replayed, the MDS will close the session. And then the kclient could remove the session and later when the mdsmap is in RECONNECT phrase it will skip reconnecting. But the MDS will wait until timeout and then evict the kclient. Just skip sending the reconnection request until the MDS is ready. Link: https://tracker.ceph.com/issues/62489 Signed-off-by: Xiubo Li <xiubli@redhat.com> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
0dd3ee3112
commit
cbcb358b74
@ -5870,7 +5870,8 @@ static void mds_peer_reset(struct ceph_connection *con)
|
||||
|
||||
pr_warn_client(mdsc->fsc->client, "mds%d closed our session\n",
|
||||
s->s_mds);
|
||||
if (READ_ONCE(mdsc->fsc->mount_state) != CEPH_MOUNT_FENCE_IO)
|
||||
if (READ_ONCE(mdsc->fsc->mount_state) != CEPH_MOUNT_FENCE_IO &&
|
||||
ceph_mdsmap_get_state(mdsc->mdsmap, s->s_mds) >= CEPH_MDS_STATE_RECONNECT)
|
||||
send_mds_reconnect(mdsc, s);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user