]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cifs: detect dead connections only when echoes are enabled.
authorShyam Prasad N <sprasad@microsoft.com>
Thu, 29 Apr 2021 07:53:18 +0000 (07:53 +0000)
committerSteve French <stfrench@microsoft.com>
Mon, 3 May 2021 16:49:13 +0000 (11:49 -0500)
We can detect server unresponsiveness only if echoes are enabled.
Echoes can be disabled under two scenarios:
1. The connection is low on credits, so we've disabled echoes/oplocks.
2. The connection has not seen any request till now (other than
negotiate/sess-setup), which is when we enable these two, based on
the credits available.

So this fix will check for dead connection, only when echo is enabled.

Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
CC: <stable@vger.kernel.org> # v5.8+
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/connect.c

index 121d8b4535b0ed6a253ba39757d52afcc8169aca..becd5f807787b1fc5af2d653e4fa00454ffdb3a2 100644 (file)
@@ -476,6 +476,7 @@ server_unresponsive(struct TCP_Server_Info *server)
         */
        if ((server->tcpStatus == CifsGood ||
            server->tcpStatus == CifsNeedNegotiate) &&
+           (!server->ops->can_echo || server->ops->can_echo(server)) &&
            time_after(jiffies, server->lstrp + 3 * server->echo_interval)) {
                cifs_server_dbg(VFS, "has not responded in %lu seconds. Reconnecting...\n",
                         (3 * server->echo_interval) / HZ);