From: Shyam Prasad N Date: Sun, 21 Jan 2024 03:32:43 +0000 (+0000) Subject: cifs: cifs_pick_channel should try selecting active channels X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=fc43a8ac396d302ced1e991e4913827cf72c8eb9;p=linux.git cifs: cifs_pick_channel should try selecting active channels cifs_pick_channel today just selects a channel based on the policy of least loaded channel. However, it does not take into account if the channel needs reconnect. As a result, we can have failures in send that can be completely avoided. This change doesn't make a channel a candidate for this selection if it needs reconnect. Signed-off-by: Shyam Prasad N Signed-off-by: Steve French --- diff --git a/fs/smb/client/transport.c b/fs/smb/client/transport.c index 4f717ad7c21b4..8695c9961f5aa 100644 --- a/fs/smb/client/transport.c +++ b/fs/smb/client/transport.c @@ -1026,6 +1026,9 @@ struct TCP_Server_Info *cifs_pick_channel(struct cifs_ses *ses) if (!server || server->terminate) continue; + if (CIFS_CHAN_NEEDS_RECONNECT(ses, i)) + continue; + /* * strictly speaking, we should pick up req_lock to read * server->in_flight. But it shouldn't matter much here if we