Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1742932

[Patch v4 11/22] CIFS: SMBD: Set SMBDirect maximum read or write size for I/O

Path csiph.com!news.redatomik.org!aioe.org!bofh.it!news.nic.it!robomod
From Long Li <longli@exchange.microsoft.com>
Newsgroups linux.kernel
Subject [Patch v4 11/22] CIFS: SMBD: Set SMBDirect maximum read or write size for I/O
Date Mon, 02 Oct 2017 04:40:01 +0200
Message-ID <uvYOd-1FS-5@gated-at.bofh.it> (permalink)
References <uvYOd-1FS-3@gated-at.bofh.it>
X-Original-To Steve French <sfrench@samba.org>, linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Christoph Hellwig <hch@infradead.org>, Tom Talpey <ttalpey@microsoft.com>, Matthew Wilcox <mawilcox@microsoft.com>
X-Originating-IP 107.180.71.197
X-Mailer git-send-email 2.14.1
X-Cmae-Envelope MS4wfChufiweeUbp9ATOic+IepjtJ80CCbiyrTZS2VS94Rl1Ll7wJjwh01ay8VLTIiWFQ1MUIKOQsRUiEN1arAwe3r4KqJnzmSPOLg25gPOmjOpv6u/sUPhF +OBpyAnMIq2SlRbZAsbNHf+94stmzq/zlCKu8mbAO32g7WkVQZBjc42g3MijZAl07JsJ4pzy0yRHVm8E0/g8Q1RRvYaj9gPOlFMC3PQbN/YR/RVNWYATWXWI 1bYwj/zS1SwAlQLMNnrN3Iv2GEP+KL68GL5JcMMr4tmGCzNmGwLBFcNOprPujl/hsz23AhuyAWAnwh6g5can52/GL4qH57q1XMuTp/Udp/QCdxyc17xp2J+G SerQSXCrd3OLPB2OhJj11JWvyDj5Ofiyh4C7kRMnIUTB7gV8bB9TvRZLVpEvvyzI/ztAFE22uPqoKAsqC4IHJ0J57RB9qEM7gwArwdD+a2ws76jM8p5TlJLB EnSOzrD4wKnHVdkh
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 52
Organization linux.* mail to news gateway
X-Original-Cc Long Li <longli@microsoft.com>
X-Original-Date Sun, 1 Oct 2017 19:30:19 -0700
X-Original-Message-ID <20171002023030.3582-12-longli@exchange.microsoft.com>
X-Original-References <20171002023030.3582-1-longli@exchange.microsoft.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1742932

Show key headers only | View raw


From: Long Li <longli@microsoft.com>

When connecting over SMBDirect, the transport negotiates its maximum I/O sizes
with the server and determines how to choose to do RDMA send/recv vs
read/write. Expose these maximum I/O sizes to upper layer so we will get the
correct sized payloads.

Signed-off-by: Long Li <longli@microsoft.com>
---
 fs/cifs/smb2ops.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/fs/cifs/smb2ops.c b/fs/cifs/smb2ops.c
index fb2934b..7ad35d6 100644
--- a/fs/cifs/smb2ops.c
+++ b/fs/cifs/smb2ops.c
@@ -32,6 +32,7 @@
 #include "smb2status.h"
 #include "smb2glob.h"
 #include "cifs_ioctl.h"
+#include "smbdirect.h"
 
 static int
 change_conf(struct TCP_Server_Info *server)
@@ -249,7 +250,11 @@ smb2_negotiate_wsize(struct cifs_tcon *tcon, struct smb_vol *volume_info)
 
 	/* start with specified wsize, or default */
 	wsize = volume_info->wsize ? volume_info->wsize : CIFS_DEFAULT_IOSIZE;
-	wsize = min_t(unsigned int, wsize, server->max_write);
+	if (server->rdma)
+		wsize = min_t(unsigned int,
+				wsize, server->smbd_conn->max_readwrite_size);
+	else
+		wsize = min_t(unsigned int, wsize, server->max_write);
 
 	if (!(server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU))
 		wsize = min_t(unsigned int, wsize, SMB2_MAX_BUFFER_SIZE);
@@ -265,7 +270,11 @@ smb2_negotiate_rsize(struct cifs_tcon *tcon, struct smb_vol *volume_info)
 
 	/* start with specified rsize, or default */
 	rsize = volume_info->rsize ? volume_info->rsize : CIFS_DEFAULT_IOSIZE;
-	rsize = min_t(unsigned int, rsize, server->max_read);
+	if (server->rdma)
+		rsize = min_t(unsigned int,
+				rsize, server->smbd_conn->max_readwrite_size);
+	else
+		rsize = min_t(unsigned int, rsize, server->max_read);
 
 	if (!(server->capabilities & SMB2_GLOBAL_CAP_LARGE_MTU))
 		rsize = min_t(unsigned int, rsize, SMB2_MAX_BUFFER_SIZE);
-- 
2.7.4

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[Patch v4 11/22] CIFS: SMBD: Set SMBDirect maximum read or write size for I/O Long Li <longli@exchange.microsoft.com> - 2017-10-02 04:40 +0200

csiph-web