Skip to content

Commit

Permalink
Merge pull request #29200 from smithfarm/wip-39685-mimic
Browse files Browse the repository at this point in the history
mimic: cephfs: ceph-fuse: client hang because its bad session PipeConnection to mds

Reviewed-by: Venky Shankar <vshankar@redhat.com>
Reviewed-by: Yan, Zheng <zyan@redhat.com>
  • Loading branch information
yuriw committed Jul 25, 2019
2 parents 2196bff + 098fab9 commit 6e2797e
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions src/client/Client.cc
Expand Up @@ -2717,24 +2717,26 @@ void Client::handle_mds_map(MMDSMap* m)
continue; // no change

session->mds_state = newstate;
if (old_inc != new_inc && newstate > MDSMap::STATE_RECONNECT) {
// missed reconnect close the session so that it can be reopened
_closed_mds_session(session);
continue;
}
if (newstate == MDSMap::STATE_RECONNECT) {
session->con = messenger->get_connection(session->inst);
send_reconnect(session);
} else if (newstate >= MDSMap::STATE_ACTIVE) {
if (oldstate < MDSMap::STATE_ACTIVE) {
// kick new requests
kick_requests(session);
kick_flushing_caps(session);
signal_context_list(session->waiting_for_open);
kick_maxsize_requests(session);
wake_inode_waiters(session);
} else if (newstate > MDSMap::STATE_RECONNECT) {
if (oldstate < MDSMap::STATE_RECONNECT) {
ldout(cct, 1) << "we may miss the MDSMap::RECONNECT, close mds session ... " << dendl;
_closed_mds_session(session);
continue;
}
if (newstate >= MDSMap::STATE_ACTIVE) {
if (oldstate < MDSMap::STATE_ACTIVE) {
// kick new requests
kick_requests(session);
kick_flushing_caps(session);
signal_context_list(session->waiting_for_open);
kick_maxsize_requests(session);
wake_inode_waiters(session);
}
connect_mds_targets(mds);
}
connect_mds_targets(mds);
} else if (newstate == MDSMap::STATE_NULL &&
mds >= mdsmap->get_max_mds()) {
_closed_mds_session(session);
Expand Down

0 comments on commit 6e2797e

Please sign in to comment.