From patchwork Thu Nov 23 00:38:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Long Li X-Patchwork-Id: 840632 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-cifs-owner@vger.kernel.org; receiver=) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yj0wW3kbDz9s1h for ; Thu, 23 Nov 2017 11:45:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752297AbdKWAo7 (ORCPT ); Wed, 22 Nov 2017 19:44:59 -0500 Received: from a2nlsmtp01-05.prod.iad2.secureserver.net ([198.71.225.49]:37646 "EHLO a2nlsmtp01-05.prod.iad2.secureserver.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751861AbdKWAkR (ORCPT ); Wed, 22 Nov 2017 19:40:17 -0500 Received: from linuxonhyperv.com ([107.180.71.197]) by : HOSTING RELAY : with SMTP id HfXae5G6mZHUgHfXae8HOH; Wed, 22 Nov 2017 17:39:15 -0700 x-originating-ip: 107.180.71.197 Received: from longli by linuxonhyperv.com with local (Exim 4.89) (envelope-from ) id 1eHfXa-0004SQ-SE; Wed, 22 Nov 2017 17:38:54 -0700 From: Long Li To: Steve French , linux-cifs@vger.kernel.org, samba-technical@lists.samba.org, linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org, Christoph Hellwig , Tom Talpey , Matthew Wilcox , Stephen Hemminger Cc: Long Li Subject: [Patch v8 00/16] CIFS: Implement SMB Direct protocol Date: Wed, 22 Nov 2017 17:38:33 -0700 Message-Id: <20171123003849.17093-1-longli@exchange.microsoft.com> X-Mailer: git-send-email 2.15.0 X-CMAE-Envelope: MS4wfPF3FfXcRss02iuIIPD/Cl2sMQH7uivAVwNt8xr4jYwJoc2Liv75ilshXnJANLjUwIlsigD2pjgc5siYRVer5h8qmQ7QM6+LIMmw1x9zIxt0IXoviDYN GWphHxcqAhtMyufICwVR36YA2yWVWBR6Xw72ZZfPzdhQ++LJTB6tabDvb/KgTC+2Pwdxsk0Eft5v1tUs+6+fWd0A6tqz5gZeuAxKibMZbmQaHfF3059zWJGj R4dJUY8eBMHsDLPwz4KKNhXSH+t9V3v73RIc1vwj0qRC6BQvt4B7ms4pfJBv4G5JC5lWEnPHPM6aBDo+pqUIBwdZcDeTelZFpBplJLASpahrXD9j5QBUYWER lBSHMVmERrDf/0245RHDZ/F/mZXRaSxS9WG5exuaoDdnssZ8A4zkhXcNLqKy8KIszMYAHpLkzYR0QV+Ko+iOvsmJsNZY1s4rRi67r8JBRpoTF88hFDSgb07v YpEXLbgp7wEUGT89G+MB/sEhYbIYQiAkpS7tCA== Sender: linux-cifs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-cifs@vger.kernel.org From: Long Li Starting with SMB2 dialect 3.0, Microsoft introduced SMB Direct transport protocol for transferring upper layer (SMB2) payload over RDMA via Infiniband, RoCE or iWARP. The prococol is published in [MS-SMBD] (https://msdn.microsoft.com/en-us/library/hh536346.aspx). Change log: v2: Implemented RDMA read/write via memory registration. Re-arranged patches for review [Christoph Hellwig ]. Restructured the code and fixed bugs on protocol timer and keepalive [Tom Talpey ]. v3: Improved performance by introducing an additional queue for handling empty packets and reducing lock contention on IRQ path. Added light weight profiling by reading TSC. Improved the code for checking SMB versions when mounting with rdma option [Leon Romanovsky ]. Moved to use pages instead of buffers for passing I/O for RDMA [Christoph Hellwig ]. Removed redundant code and refactored I/O code paths [Christoph Hellwig , Tom Talpey ]. v4: Fixed connectivity issues with iWAPR devices. Exported configurable protocol parameters to /proc/fs/cifs [Steve French ] Re-arranged patches for review [Pavel Shilovsky ]. v5: Fixed compiling errors on ia64, i386 and when INFINIBAND is not configured. [kbuild test robot] Profiling is removed and will be introduced in a seperate patch. v6: Report internal code error via WARN_ON(). Change description in Kconfig [Pavel Shilovsky ]. v7: Removed the use of #ifdef CONFIG_CIFS_SMB_DIRECT in upper layer code calling transport I/O. [Matthew Wilcox , Tom Talpey ] v8: Fixed comment typos and removed unused code [Ronnie Sahlberg ] Removed the first 7 patches in v7, which have been merged. Restructed the code to move relevant function definitions to later patches. [Pavel Shilovsky ] Added a patch to disable signing when RDMA is in use. Signing will be enabled after it is properly implemented in SMB Direct code paths. Fixed an issue on passing the incorrect offset to smbd_buffer_descriptor_v1 when RDMA read is used for SMB write. This was caused by recent CIFS patches to remove packet length from SMB2 packet header. Long Li (16): CIFS: SMBD: Upper layer connects to SMBDirect session CIFS: SMBD: Implement function to reconnect to a SMB Direct transport CIFS: SMBD: Upper layer reconnects to SMB Direct session CIFS: SMBD: Implement function to destroy a SMB Direct connection CIFS: SMBD: Upper layer destroys SMB Direct session on shutdown or umount CIFS: SMBD: Set SMB Direct maximum read or write size for I/O CIFS: SMBD: Implement function to receive data via RDMA receive CIFS: SMBD: Upper layer receives data via RDMA receive CIFS: SMBD: Implement function to send data via RDMA send CIFS: SMBD: Upper layer sends data via RDMA send CIFS: SMBD: Implement RDMA memory registration CIFS: SMBD: Upper layer performs SMB write via RDMA read through memory registration CIFS: SMBD: Read correct returned data length for RDMA write (SMB read) I/O CIFS: SMBD: Upper layer performs SMB read via RDMA write through memory registration CIFS: SMBD: Add SMB Direct debug counters CIFS: SMBD: Disable signing on SMB direct transport fs/cifs/cifs_debug.c | 66 ++++ fs/cifs/cifsglob.h | 16 +- fs/cifs/cifssmb.c | 15 +- fs/cifs/connect.c | 46 ++- fs/cifs/file.c | 17 +- fs/cifs/smb1ops.c | 4 +- fs/cifs/smb2ops.c | 24 +- fs/cifs/smb2pdu.c | 117 ++++++- fs/cifs/smbdirect.c | 947 +++++++++++++++++++++++++++++++++++++++++++++++++++ fs/cifs/smbdirect.h | 72 ++++ fs/cifs/transport.c | 8 +- 11 files changed, 1308 insertions(+), 24 deletions(-) Reviewed-by: Pavel Shilovsky Reviewed-by: Ronnie Sahlberg