]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
CIFS: Propagate min offload along with other parameters from primary to secondary...
authorAman <aman1@microsoft.com>
Thu, 6 Mar 2025 17:46:43 +0000 (17:46 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 20 Apr 2025 08:18:18 +0000 (10:18 +0200)
commit 1821e90be08e7d4a54cd167dd818d80d06e064e9 upstream.

In a multichannel setup, it was observed that a few fields were not being
copied over to the secondary channels, which impacted performance in cases
where these options were relevant but not properly synchronized. To address
this, this patch introduces copying the following parameters from the
primary channel to the secondary channels:

- min_offload
- compression.requested
- dfs_conn
- ignore_signature
- leaf_fullpath
- noblockcnt
- retrans
- sign

By copying these parameters, we ensure consistency across channels and
prevent performance degradation due to missing or outdated settings.

Cc: stable@vger.kernel.org
Signed-off-by: Aman <aman1@microsoft.com>
Reviewed-by: Paulo Alcantara (Red Hat) <pc@manguebit.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/smb/client/connect.c
fs/smb/client/sess.c

index 41c703b9c91ca4b363e3344d71e8b001e7892c03..e77cde2b926d229bef6fe1e91bc184fca44289ec 100644 (file)
@@ -1722,6 +1722,7 @@ cifs_get_tcp_session(struct smb3_fs_context *ctx,
        /* Grab netns reference for this server. */
        cifs_set_net_ns(tcp_ses, get_net(current->nsproxy->net_ns));
 
+       tcp_ses->sign = ctx->sign;
        tcp_ses->conn_id = atomic_inc_return(&tcpSesNextId);
        tcp_ses->noblockcnt = ctx->rootfs;
        tcp_ses->noblocksnd = ctx->noblocksnd || ctx->rootfs;
index faa80e7d54a6e8bd7505961f47a6c43a813f5326..eb70ebf38464bcf2af46d2cad3b95818089eb538 100644 (file)
@@ -522,6 +522,13 @@ cifs_ses_add_channel(struct cifs_ses *ses,
        ctx->sockopt_tcp_nodelay = ses->server->tcp_nodelay;
        ctx->echo_interval = ses->server->echo_interval / HZ;
        ctx->max_credits = ses->server->max_credits;
+       ctx->min_offload = ses->server->min_offload;
+       ctx->compress = ses->server->compression.requested;
+       ctx->dfs_conn = ses->server->dfs_conn;
+       ctx->ignore_signature = ses->server->ignore_signature;
+       ctx->leaf_fullpath = ses->server->leaf_fullpath;
+       ctx->rootfs = ses->server->noblockcnt;
+       ctx->retrans = ses->server->retrans;
 
        /*
         * This will be used for encoding/decoding user/domain/pw