|
@@ -199,8 +199,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
|
|
|
}
|
|
|
spin_unlock(&GlobalMid_Lock);
|
|
|
|
|
|
- while ((server->tcpStatus != CifsExiting) &&
|
|
|
- (server->tcpStatus != CifsGood)) {
|
|
|
+ while (server->tcpStatus == CifsNeedReconnect) {
|
|
|
try_to_freeze();
|
|
|
|
|
|
/* we should try only the port we connected to before */
|
|
@@ -212,7 +211,7 @@ cifs_reconnect(struct TCP_Server_Info *server)
|
|
|
atomic_inc(&tcpSesReconnectCount);
|
|
|
spin_lock(&GlobalMid_Lock);
|
|
|
if (server->tcpStatus != CifsExiting)
|
|
|
- server->tcpStatus = CifsGood;
|
|
|
+ server->tcpStatus = CifsNeedNegotiate;
|
|
|
spin_unlock(&GlobalMid_Lock);
|
|
|
}
|
|
|
}
|
|
@@ -421,7 +420,7 @@ cifs_demultiplex_thread(struct TCP_Server_Info *server)
|
|
|
pdu_length = 4; /* enough to get RFC1001 header */
|
|
|
|
|
|
incomplete_rcv:
|
|
|
- if (echo_retries > 0 &&
|
|
|
+ if (echo_retries > 0 && server->tcpStatus == CifsGood &&
|
|
|
time_after(jiffies, server->lstrp +
|
|
|
(echo_retries * SMB_ECHO_INTERVAL))) {
|
|
|
cERROR(1, "Server %s has not responded in %d seconds. "
|
|
@@ -1766,6 +1765,7 @@ cifs_get_tcp_session(struct smb_vol *volume_info)
|
|
|
module_put(THIS_MODULE);
|
|
|
goto out_err_crypto_release;
|
|
|
}
|
|
|
+ tcp_ses->tcpStatus = CifsNeedNegotiate;
|
|
|
|
|
|
/* thread spawned, put it on the list */
|
|
|
spin_lock(&cifs_tcp_ses_lock);
|