Linux CIFS filesystem development
 help / color / mirror / Atom feed
* [PATCH v2 0/2] reconnect fixes and improvements
@ 2026-09-28 15:03 Enzo Matsumiya
  2026-09-28 15:03 ` [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect Enzo Matsumiya
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Enzo Matsumiya @ 2026-09-28 15:03 UTC (permalink / raw)
  To: linux-cifs
  Cc: pc, linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho, Enzo Matsumiya

Hi all,

Sending v2 to address the issues found by sashiko
https://sashiko.dev/#/patchset/20260925202003.618856-1-ematsumiya%40suse.de

Please refer to the original cover letter for rationale and reproducer
https://lore.kernel.org/linux-cifs/20260925202003.618856-1-ematsumiya@suse.de/


Cheers,

Enzo Matsumiya (2):
  smb: client: fast fail sends if need to reconnect
  smb: client: prevent premature discard of requests if reconnecting

 fs/smb/client/cifsglob.h  |  4 ++
 fs/smb/client/connect.c   | 58 ++++++++++++++++++++-----
 fs/smb/client/misc.c      | 91 +++++++++++++++++++++++++++------------
 fs/smb/client/transport.c |  8 ++++
 4 files changed, 124 insertions(+), 37 deletions(-)

-- 
2.55.0


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect
  2026-09-28 15:03 [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
@ 2026-09-28 15:03 ` Enzo Matsumiya
  2026-09-29  4:14   ` Namjae Jeon
  2026-09-28 15:03 ` [PATCH v2 2/2] smb: client: prevent premature discard of requests if reconnecting Enzo Matsumiya
  2026-10-06 13:49 ` [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
  2 siblings, 1 reply; 8+ messages in thread
From: Enzo Matsumiya @ 2026-09-28 15:03 UTC (permalink / raw)
  To: linux-cifs
  Cc: pc, linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho, Enzo Matsumiya

smb_send_kvec() keeps retrying when server needs to reconnect, which
makes no sense as cifs_reconnect() will never run in parallel (because
both need server mutex).
IOW, retrying will never succeed, but only delay reconnects further.

Bail out early from smb_send_kvec() when need to reconnect.

Also shutdown socket queues when CifsNeedReconnect is first set, so any
sends/receives fails immediately (don't wait for socket to timeout).

Consequential change:
To shutdown the socket, we need to hold server mutex. Since not all
callers hold it when calling cifs_signal_cifsd_for_reconnect(), we
need to keep track of the owner task, so we can lock it as needed.

Add TCP_Server_Info::mutex_owner for that.

Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
---
v1 -> v2 (fix issues detected by sashiko):
- move kernel_sock_shutdown() call out of cifs_tcp_ses_lock
- use server mutex to check/shutdown socket


 fs/smb/client/cifsglob.h  |  3 +++
 fs/smb/client/connect.c   | 54 +++++++++++++++++++++++++++++++--------
 fs/smb/client/transport.c |  8 ++++++
 3 files changed, 55 insertions(+), 10 deletions(-)

diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h
index 79e4e84f8985..d279b5c92a08 100644
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -711,6 +711,7 @@ struct TCP_Server_Info {
 	spinlock_t req_lock;  /* protect the two values above */
 	struct mutex _srv_mutex;
 	unsigned int nofs_flag;
+	struct task_struct *mutex_owner;
 	struct task_struct *tsk;
 	char server_GUID[16];
 	__u16 sec_mode;
@@ -847,12 +848,14 @@ static inline void cifs_server_lock(struct TCP_Server_Info *server)
 
 	mutex_lock(&server->_srv_mutex);
 	server->nofs_flag = nofs_flag;
+	server->mutex_owner = current;
 }
 
 static inline void cifs_server_unlock(struct TCP_Server_Info *server)
 {
 	unsigned int nofs_flag = server->nofs_flag;
 
+	server->mutex_owner = NULL;
 	mutex_unlock(&server->_srv_mutex);
 	memalloc_nofs_restore(nofs_flag);
 }
diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index 28e1ddeb6182..4cc433308c96 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -127,13 +127,42 @@ void smb2_query_server_interfaces(struct work_struct *work)
 			   (SMB_INTERFACE_POLL_INTERVAL * HZ));
 }
 
-#define set_need_reco(server) \
-do { \
-	spin_lock(&server->srv_lock); \
-	if (server->tcpStatus != CifsExiting) \
-		server->tcpStatus = CifsNeedReconnect; \
-	spin_unlock(&server->srv_lock); \
-} while (0)
+static inline bool __set_need_reco(struct TCP_Server_Info *server)
+{
+	bool need_reco = false;
+
+	spin_lock(&server->srv_lock);
+	if (server->tcpStatus != CifsExiting) {
+		need_reco = (server->tcpStatus != CifsNeedReconnect);
+		server->tcpStatus = CifsNeedReconnect;
+	}
+	spin_unlock(&server->srv_lock);
+
+	return need_reco;
+}
+
+static inline void kill_socket_queues(struct TCP_Server_Info *server)
+{
+	bool locked = false;
+
+	if (server->mutex_owner != current) {
+		cifs_server_lock(server);
+		locked = true;
+	}
+
+	if (server->ssocket)
+		/* Don't release it yet! */
+		kernel_sock_shutdown(server->ssocket, SHUT_RDWR);
+
+	if (locked)
+		cifs_server_unlock(server);
+}
+
+static inline void set_need_reco(struct TCP_Server_Info *server)
+{
+	if (__set_need_reco(server))
+		kill_socket_queues(server);
+}
 
 /*
  * Update the tcpStatus for the server.
@@ -151,6 +180,7 @@ cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server,
 	struct TCP_Server_Info *nserver;
 	struct cifs_ses *ses;
 	LIST_HEAD(reco);
+	bool shutdown;
 	int i;
 
 	/* if we need to signal just this channel */
@@ -162,7 +192,7 @@ cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server,
 	if (SERVER_IS_CHAN(server))
 		server = server->primary_server;
 	scoped_guard(spinlock, &cifs_tcp_ses_lock) {
-		set_need_reco(server);
+		shutdown = __set_need_reco(server);
 		list_for_each_entry(ses, &server->smb_ses_list, smb_ses_list) {
 			spin_lock(&ses->ses_lock);
 			if (ses->ses_status == SES_EXITING) {
@@ -184,6 +214,9 @@ cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server,
 		}
 	}
 
+	if (shutdown)
+		kill_socket_queues(server);
+
 	spin_lock(&cifs_tcp_ses_lock);
 	list_for_each_entry_safe(server, nserver, &reco, rlist) {
 		list_del_init(&server->rlist);
@@ -365,9 +398,10 @@ static bool cifs_tcp_ses_needs_reconnect(struct TCP_Server_Info *server, int num
 	cifs_dbg(FYI, "Mark tcp session as need reconnect\n");
 	trace_smb3_reconnect(server->current_mid, server->conn_id,
 			     server->hostname);
-	server->tcpStatus = CifsNeedReconnect;
-
 	spin_unlock(&server->srv_lock);
+
+	set_need_reco(server);
+
 	return true;
 }
 
diff --git a/fs/smb/client/transport.c b/fs/smb/client/transport.c
index 6e21b5f8754a..c6e0ee6d0ef4 100644
--- a/fs/smb/client/transport.c
+++ b/fs/smb/client/transport.c
@@ -180,6 +180,10 @@ smb_send_kvec(struct TCP_Server_Info *server, struct msghdr *smb_msg,
 		 */
 		rc = sock_sendmsg(ssocket, smb_msg);
 		if (rc == -EAGAIN || unlikely(rc == -EINTR && task_work_pending(current))) {
+			/* Don't retry if need to reconnect */
+			if (unlikely(server->tcpStatus == CifsNeedReconnect))
+				return -ECONNRESET;
+
 			retries++;
 			if (retries >= 14 ||
 			    (!server->noblocksnd && (retries > 2))) {
@@ -191,6 +195,10 @@ smb_send_kvec(struct TCP_Server_Info *server, struct msghdr *smb_msg,
 			continue;
 		}
 
+		/* Blame the need to reconnect for any non-interrupt error */
+		if (unlikely(server->tcpStatus == CifsNeedReconnect && !is_interrupt_error(rc)))
+			rc = -ECONNRESET;
+
 		if (rc < 0)
 			return rc;
 
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/2] smb: client: prevent premature discard of requests if reconnecting
  2026-09-28 15:03 [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
  2026-09-28 15:03 ` [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect Enzo Matsumiya
@ 2026-09-28 15:03 ` Enzo Matsumiya
  2026-10-06 13:49 ` [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
  2 siblings, 0 replies; 8+ messages in thread
From: Enzo Matsumiya @ 2026-09-28 15:03 UTC (permalink / raw)
  To: linux-cifs
  Cc: pc, linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho, Enzo Matsumiya

Add TCP_Server_Info::reconnecting to track cifs_reconnect() lifetime.
Wait for it to be true in cifs_wait_for_server_reconnect(), and only
then wait for tcpStatus change.

Also, return -ECONNRESET (instead of -EHOSTDOWN) if reconnect is still
ongoing at the end, so requests are not discarded unnecessarily.
-ECONNRESET is not immediately retried by intermediate layers, e.g. VFS,
but still serves as an indication to userspace that retrying the
operation might be successful.

Changes (refactor cifs_wait_for_server_reconnect()):
- remove unnecessary do/while loop; use wait_event_interruptible()
  for hard mounts
- increase timeout, and base it on echo_interval to match user
  preferences
- remove useless debug log for interrupt errors

Signed-off-by: Enzo Matsumiya <ematsumiya@suse.de>
---
v1 -> v2 (fix issues detected by sashiko):
- handle condition changes post-wait_event timeouts
- return -ECONNRESET instead of -EAGAIN when leaving still reconnecting

(not from sashiko):
- add missing wake_up() after setting server->reconnecting to true in
  cifs_tcp_ses_needs_reconnect()
- handle tcpStatus == CifsExiting in cifs_wait_for_server_reconnect()


 fs/smb/client/cifsglob.h |  1 +
 fs/smb/client/connect.c  |  4 ++
 fs/smb/client/misc.c     | 91 ++++++++++++++++++++++++++++------------
 3 files changed, 69 insertions(+), 27 deletions(-)

diff --git a/fs/smb/client/cifsglob.h b/fs/smb/client/cifsglob.h
index d279b5c92a08..9623ee19312c 100644
--- a/fs/smb/client/cifsglob.h
+++ b/fs/smb/client/cifsglob.h
@@ -803,6 +803,7 @@ struct TCP_Server_Info {
 	bool	posix_ext_supported;
 	struct delayed_work reconnect; /* reconnect workqueue job */
 	struct mutex reconnect_mutex; /* prevent simultaneous reconnects */
+	bool reconnecting; /* if cifs_reconnect() is indeed running */
 	unsigned long echo_interval;
 
 	/*
diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c
index 4cc433308c96..58efc5392fc4 100644
--- a/fs/smb/client/connect.c
+++ b/fs/smb/client/connect.c
@@ -398,6 +398,8 @@ static bool cifs_tcp_ses_needs_reconnect(struct TCP_Server_Info *server, int num
 	cifs_dbg(FYI, "Mark tcp session as need reconnect\n");
 	trace_smb3_reconnect(server->current_mid, server->conn_id,
 			     server->hostname);
+	server->reconnecting = true;
+	wake_up(&server->response_q);
 	spin_unlock(&server->srv_lock);
 
 	set_need_reco(server);
@@ -475,6 +477,7 @@ static int __cifs_reconnect(struct TCP_Server_Info *server,
 	spin_lock(&server->srv_lock);
 	if (server->tcpStatus == CifsNeedNegotiate)
 		mod_delayed_work(cifsiod_wq, &server->echo, 0);
+	server->reconnecting = false;
 	spin_unlock(&server->srv_lock);
 
 	wake_up(&server->response_q);
@@ -617,6 +620,7 @@ static int reconnect_dfs_server(struct TCP_Server_Info *server)
 	spin_lock(&server->srv_lock);
 	if (server->tcpStatus == CifsNeedNegotiate)
 		mod_delayed_work(cifsiod_wq, &server->echo, 0);
+	server->reconnecting = false;
 	spin_unlock(&server->srv_lock);
 
 	wake_up(&server->response_q);
diff --git a/fs/smb/client/misc.c b/fs/smb/client/misc.c
index 05168284f205..24aa0333553a 100644
--- a/fs/smb/client/misc.c
+++ b/fs/smb/client/misc.c
@@ -1077,44 +1077,81 @@ int cifs_inval_name_dfs_link_error(const unsigned int xid,
 
 int cifs_wait_for_server_reconnect(struct TCP_Server_Info *server, bool retry)
 {
-	int timeout = 10;
-	int rc;
+	int timeout, rc = 0;
+
+	/* Hard mounts keep waiting until process is killed or server comes back on-line. */
+	if (retry)
+		return wait_event_interruptible(server->response_q,
+						(server->tcpStatus != CifsNeedReconnect));
 
 	spin_lock(&server->srv_lock);
 	if (server->tcpStatus != CifsNeedReconnect) {
+		if (unlikely(server->tcpStatus == CifsExiting))
+			rc = -ESHUTDOWN;
 		spin_unlock(&server->srv_lock);
-		return 0;
+
+		return rc;
 	}
-	timeout *= server->nr_targets;
+
+	/*
+	 * Soft mounts, wait with timeout.
+	 * Compute timeout based on echo_interval, to match user expectations wrt. time to recover
+	 * from network interruptions.
+	 *
+	 * Minimum is 17 seconds (per reconnect target):
+	 *   7s for cifs socket timeout
+	 *   3s sleep after a failed attempt
+	 *   7s spare, to cover at least a full attempt
+	 *
+	 * Maximum is 60s; might not be enough in some rare cases, but >60s is too much.
+	 */
+	timeout = max(server->echo_interval / HZ, 17) * server->nr_targets;
+	timeout = min(timeout, 60);
 	spin_unlock(&server->srv_lock);
 
 	/*
-	 * Give demultiplex thread up to 10 seconds to each target available for
-	 * reconnect -- should be greater than cifs socket timeout which is 7
-	 * seconds.
+	 * First, wait for cifs_reconnect() to start.
+	 * This is needed because tcpStatus == CifsNeedReconnect doesn't imply cifs_reconnect()
+	 * is actually running.
 	 *
-	 * On "soft" mounts we wait once. Hard mounts keep retrying until
-	 * process is killed or server comes back on-line.
+	 * Wait 3*timeout (max 180s) here, which should be more than enough.
 	 */
-	do {
-		rc = wait_event_interruptible_timeout(server->response_q,
-						      (server->tcpStatus != CifsNeedReconnect),
-						      timeout * HZ);
-		if (rc < 0) {
-			cifs_dbg(FYI, "%s: aborting reconnect due to received signal\n",
-				 __func__);
-			return -ERESTARTSYS;
-		}
+	rc = wait_event_interruptible_timeout(server->response_q,
+					      (server->reconnecting ||
+					       server->tcpStatus != CifsNeedReconnect),
+					      min(3 * timeout, 180) * HZ);
+
+	/* cifs_reconnect() never started, don't wait any longer */
+	spin_lock(&server->srv_lock);
+	if (!rc && !server->reconnecting && server->tcpStatus == CifsNeedReconnect)
+		rc = -EHOSTDOWN;
+	spin_unlock(&server->srv_lock);
 
-		/* are we still trying to reconnect? */
-		spin_lock(&server->srv_lock);
-		if (server->tcpStatus != CifsNeedReconnect) {
-			spin_unlock(&server->srv_lock);
-			return 0;
+	if (rc < 0)
+		return rc;
+
+	/* cifs_reconnect() started (maybe already succeeded), wait for status change */
+	rc = wait_event_interruptible_timeout(server->response_q,
+					      (server->tcpStatus != CifsNeedReconnect),
+					      timeout * HZ);
+	if (rc < 0)
+		return rc;
+
+	spin_lock(&server->srv_lock);
+	if (server->tcpStatus != CifsNeedReconnect) {
+		rc = 0;
+		if (server->tcpStatus == CifsExiting)
+			rc = -ESHUTDOWN;
+	} else {
+		rc = -ECONNRESET;
+
+		/* Are we still even trying to reconnect? */
+		if (!server->reconnecting) {
+			cifs_dbg(FYI, "%s: gave up waiting on reconnect\n", __func__);
+			rc = -EHOSTDOWN;
 		}
-		spin_unlock(&server->srv_lock);
-	} while (retry);
+	}
+	spin_unlock(&server->srv_lock);
 
-	cifs_dbg(FYI, "%s: gave up waiting on reconnect\n", __func__);
-	return -EHOSTDOWN;
+	return rc;
 }
-- 
2.55.0


^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect
  2026-09-28 15:03 ` [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect Enzo Matsumiya
@ 2026-09-29  4:14   ` Namjae Jeon
  2026-09-29 12:25     ` Enzo Matsumiya
  0 siblings, 1 reply; 8+ messages in thread
From: Namjae Jeon @ 2026-09-29  4:14 UTC (permalink / raw)
  To: Enzo Matsumiya
  Cc: linux-cifs, pc, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho

> @@ -184,6 +214,9 @@ cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server,
>                 }
>         }
>
> +       if (shutdown)
> +               kill_socket_queues(server);
> +
>         spin_lock(&cifs_tcp_ses_lock);
Since this loop still holds cifs_tcp_ses_lock, It can sleep while
holding a spinlock, causing a scheduling-while-atomic failure. The
previous set_need_reco macro did not acquire a mutex.

Please check sashiko's review comments.

https://sashiko.dev/#/patchset/20260928150355.850472-1-ematsumiya%40suse.de

Thanks.
>         list_for_each_entry_safe(server, nserver, &reco, rlist) {
>                 list_del_init(&server->rlist);
> @@ -365,9 +398,10 @@ static bool cifs_tcp_ses_needs_reconnect(struct TCP_Server_Info *server, int num
>         cifs_dbg(FYI, "Mark tcp session as need reconnect\n");
>         trace_smb3_reconnect(server->current_mid, server->conn_id,
>                              server->hostname);
> -       server->tcpStatus = CifsNeedReconnect;
> -
>         spin_unlock(&server->srv_lock);
> +
> +       set_need_reco(server);
> +
>         return true;

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect
  2026-09-29  4:14   ` Namjae Jeon
@ 2026-09-29 12:25     ` Enzo Matsumiya
  0 siblings, 0 replies; 8+ messages in thread
From: Enzo Matsumiya @ 2026-09-29 12:25 UTC (permalink / raw)
  To: Namjae Jeon
  Cc: linux-cifs, pc, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho

On 09/29, Namjae Jeon wrote:
>> @@ -184,6 +214,9 @@ cifs_signal_cifsd_for_reconnect(struct TCP_Server_Info *server,
>>                 }
>>         }
>>
>> +       if (shutdown)
>> +               kill_socket_queues(server);
>> +
>>         spin_lock(&cifs_tcp_ses_lock);
>Since this loop still holds cifs_tcp_ses_lock, It can sleep while
>holding a spinlock, causing a scheduling-while-atomic failure.

I totally missed that second loop, will handle that in v3.

AFAICS, the new set_need_reco() can be moved to after unlocking
cifs_tcp_ses_lock, as tcpStatus is already protected by srv_lock.
Any objections to that?

>The
>previous set_need_reco macro did not acquire a mutex.

Yes, the server mutex is needed to access/shutdown server->ssocket,
which is part of the core change in this patch.

>Please check sashiko's review comments.
>
>https://sashiko.dev/#/patchset/20260928150355.850472-1-ematsumiya%40suse.de

The other concerns could be ignored, but I'll address them anyway in v3.


Cheers,

Enzo

>Thanks.
>>         list_for_each_entry_safe(server, nserver, &reco, rlist) {
>>                 list_del_init(&server->rlist);
>> @@ -365,9 +398,10 @@ static bool cifs_tcp_ses_needs_reconnect(struct TCP_Server_Info *server, int num
>>         cifs_dbg(FYI, "Mark tcp session as need reconnect\n");
>>         trace_smb3_reconnect(server->current_mid, server->conn_id,
>>                              server->hostname);
>> -       server->tcpStatus = CifsNeedReconnect;
>> -
>>         spin_unlock(&server->srv_lock);
>> +
>> +       set_need_reco(server);
>> +
>>         return true;

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] reconnect fixes and improvements
  2026-09-28 15:03 [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
  2026-09-28 15:03 ` [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect Enzo Matsumiya
  2026-09-28 15:03 ` [PATCH v2 2/2] smb: client: prevent premature discard of requests if reconnecting Enzo Matsumiya
@ 2026-10-06 13:49 ` Enzo Matsumiya
  2026-10-06 15:51   ` Paulo Alcantara
  2 siblings, 1 reply; 8+ messages in thread
From: Enzo Matsumiya @ 2026-10-06 13:49 UTC (permalink / raw)
  To: linux-cifs
  Cc: pc, linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho

Hi,

Any comments on these 2 patches?
We have at least a couple of customers with huge workloads impacted by
this problem.


Thanks,

Enzo

On 09/28, Enzo Matsumiya wrote:
>Hi all,
>
>Sending v2 to address the issues found by sashiko
>https://sashiko.dev/#/patchset/20260925202003.618856-1-ematsumiya%40suse.de
>
>Please refer to the original cover letter for rationale and reproducer
>https://lore.kernel.org/linux-cifs/20260925202003.618856-1-ematsumiya@suse.de/
>
>
>Cheers,
>
>Enzo Matsumiya (2):
>  smb: client: fast fail sends if need to reconnect
>  smb: client: prevent premature discard of requests if reconnecting
>
> fs/smb/client/cifsglob.h  |  4 ++
> fs/smb/client/connect.c   | 58 ++++++++++++++++++++-----
> fs/smb/client/misc.c      | 91 +++++++++++++++++++++++++++------------
> fs/smb/client/transport.c |  8 ++++
> 4 files changed, 124 insertions(+), 37 deletions(-)
>
>-- 
>2.55.0
>
>

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] reconnect fixes and improvements
  2026-10-06 13:49 ` [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
@ 2026-10-06 15:51   ` Paulo Alcantara
  2026-10-06 15:57     ` Enzo Matsumiya
  0 siblings, 1 reply; 8+ messages in thread
From: Paulo Alcantara @ 2026-10-06 15:51 UTC (permalink / raw)
  To: Enzo Matsumiya, linux-cifs
  Cc: linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho

Enzo Matsumiya <ematsumiya@suse.de> writes:

> Any comments on these 2 patches?
> We have at least a couple of customers with huge workloads impacted by
> this problem.

Did you send v3 addressing sashiko[1] and Namjae reviews?

[1] https://sashiko.dev/#/patchset/20260928150355.850472-1-ematsumiya%40suse.de

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/2] reconnect fixes and improvements
  2026-10-06 15:51   ` Paulo Alcantara
@ 2026-10-06 15:57     ` Enzo Matsumiya
  0 siblings, 0 replies; 8+ messages in thread
From: Enzo Matsumiya @ 2026-10-06 15:57 UTC (permalink / raw)
  To: Paulo Alcantara
  Cc: linux-cifs, linkinjeon, ronniesahlberg, sprasad, tom, bharathsm,
	henrique.carvalho

On 10/06, Paulo Alcantara wrote:
>Enzo Matsumiya <ematsumiya@suse.de> writes:
>
>> Any comments on these 2 patches?
>> We have at least a couple of customers with huge workloads impacted by
>> this problem.
>
>Did you send v3 addressing sashiko[1] and Namjae reviews?
>
>[1] https://sashiko.dev/#/patchset/20260928150355.850472-1-ematsumiya%40suse.de

Yes, I did (I just noticed I replied on the v2 thread).

Patch 1:
https://lore.kernel.org/linux-cifs/20260929170358.270612-1-ematsumiya@suse.de/

Patch 2:
https://lore.kernel.org/linux-cifs/20260929170358.270612-2-ematsumiya@suse.de/


Thanks,

Enzo

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2026-10-06 15:58 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-28 15:03 [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
2026-09-28 15:03 ` [PATCH v2 1/2] smb: client: fast fail sends if need to reconnect Enzo Matsumiya
2026-09-29  4:14   ` Namjae Jeon
2026-09-29 12:25     ` Enzo Matsumiya
2026-09-28 15:03 ` [PATCH v2 2/2] smb: client: prevent premature discard of requests if reconnecting Enzo Matsumiya
2026-10-06 13:49 ` [PATCH v2 0/2] reconnect fixes and improvements Enzo Matsumiya
2026-10-06 15:51   ` Paulo Alcantara
2026-10-06 15:57     ` Enzo Matsumiya

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox