cifs: add mount parameter tcpnodelay
authorSteve French <stfrench@microsoft.com>
Thu, 14 Oct 2021 20:54:26 +0000 (15:54 -0500)
committerSteve French <stfrench@microsoft.com>
Tue, 2 Nov 2021 18:13:34 +0000 (13:13 -0500)
Although corking and uncorking the socket (which cifs.ko already
does) should usually have the desired benefit, using the new
tcpnodelay mount option causes tcp_sock_set_nodelay() to be set
on the socket which may be useful in order to ensure that we don't
ever have cases where the network stack is waiting on sending an
SMB request until multiple SMB requests have been added to the
send queue (since this could lead to long latencies).

To enable it simply append "tcpnodelay" it to the mount options

Reviewed-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/fs_context.c
fs/cifs/fs_context.h

index 4130908af8d77e4b0454b0f37a63449fee3a70c0..38d96a4807452714ce6eb842ae181c3ad263d6ca 100644 (file)
@@ -116,6 +116,7 @@ const struct fs_parameter_spec smb3_fs_parameters[] = {
        fsparam_flag("nosharesock", Opt_nosharesock),
        fsparam_flag_no("persistenthandles", Opt_persistent),
        fsparam_flag_no("resilienthandles", Opt_resilient),
+       fsparam_flag_no("tcpnodelay", Opt_tcp_nodelay),
        fsparam_flag("domainauto", Opt_domainauto),
        fsparam_flag("rdma", Opt_rdma),
        fsparam_flag("modesid", Opt_modesid),
@@ -1389,6 +1390,13 @@ static int smb3_fs_context_parse_param(struct fs_context *fc,
                        }
                }
                break;
+       case Opt_tcp_nodelay:
+               /* tcp nodelay should not usually be needed since we CORK/UNCORK the socket */
+               if (result.negated)
+                       ctx->sockopt_tcp_nodelay = false;
+               else
+                       ctx->sockopt_tcp_nodelay = true;
+               break;
        case Opt_domainauto:
                ctx->domainauto = true;
                break;
index 29601a4eb411659d63488b66c05b22a97a8d4a46..b2d22cf9cb181b05fb15acfd9a09acf55e4e4253 100644 (file)
@@ -98,6 +98,7 @@ enum cifs_param {
        Opt_nosharesock,
        Opt_persistent,
        Opt_resilient,
+       Opt_tcp_nodelay,
        Opt_domainauto,
        Opt_rdma,
        Opt_modesid,