40 lines
1.4 KiB
Diff
40 lines
1.4 KiB
Diff
From 0ca6d39b6d40b868eb6b4021f918de7a0f6a0f2e Mon Sep 17 00:00:00 2001
|
|
From: Shyam Prasad N <sprasad@microsoft.com>
|
|
Date: Mon, 2 Jun 2025 22:37:13 +0530
|
|
Subject: cifs: reset connections for all channels when reconnect requested
|
|
|
|
cifs_reconnect can be called with a flag to mark the session as needing
|
|
reconnect too. When this is done, we expect the connections of all
|
|
channels to be reconnected too, which is not happening today.
|
|
|
|
Without doing this, we have seen bad things happen when primary and
|
|
secondary channels are connected to different servers (in case of cloud
|
|
services like Azure Files SMB).
|
|
|
|
This change would force all connections to reconnect as well, not just
|
|
the sessions and tcons.
|
|
|
|
Cc: <stable@vger.kernel.org>
|
|
Signed-off-by: Shyam Prasad N <sprasad@microsoft.com>
|
|
Signed-off-by: Steve French <stfrench@microsoft.com>
|
|
---
|
|
fs/smb/client/connect.c | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
--- a/fs/smb/client/connect.c
|
|
+++ b/fs/smb/client/connect.c
|
|
@@ -377,6 +377,13 @@ static int __cifs_reconnect(struct TCP_S
|
|
if (!cifs_tcp_ses_needs_reconnect(server, 1))
|
|
return 0;
|
|
|
|
+ /*
|
|
+ * if smb session has been marked for reconnect, also reconnect all
|
|
+ * connections. This way, the other connections do not end up bad.
|
|
+ */
|
|
+ if (mark_smb_session)
|
|
+ cifs_signal_cifsd_for_reconnect(server, mark_smb_session);
|
|
+
|
|
cifs_mark_tcp_ses_conns_for_reconnect(server, mark_smb_session);
|
|
|
|
cifs_abort_connection(server);
|