From: Long Li <longli@exchange.microsoft.com>
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>,
Stephen Hemminger <sthemmin@microsoft.com>
Cc: Long Li <longli@microsoft.com>
Subject: [Patch v6 03/22] CIFS: SMBD: Add rdma mount option
Date: Sat, 4 Nov 2017 22:43:45 -0700 [thread overview]
Message-ID: <20171105054404.23886-4-longli@exchange.microsoft.com> (raw)
In-Reply-To: <20171105054404.23886-1-longli@exchange.microsoft.com>
From: Long Li <longli@microsoft.com>
Add "rdma" to CIFS mount options to connect to SMB Direct.
Add checks to validate this is used on SMB 3.X dialects.
To connect to SMBDirect, use "mount.cifs -o rdma,vers=3.x".
At the time of this patch, 3.x can be 3.0, 3.02 or 3.1.1.
Signed-off-by: Long Li <longli@microsoft.com>
---
fs/cifs/cifs_debug.c | 2 ++
fs/cifs/cifsfs.c | 2 ++
fs/cifs/cifsglob.h | 7 +++++++
fs/cifs/connect.c | 15 ++++++++++++++-
4 files changed, 25 insertions(+), 1 deletion(-)
diff --git a/fs/cifs/cifs_debug.c b/fs/cifs/cifs_debug.c
index 9727e1d..ba0870d 100644
--- a/fs/cifs/cifs_debug.c
+++ b/fs/cifs/cifs_debug.c
@@ -171,6 +171,8 @@ static int cifs_debug_data_proc_show(struct seq_file *m, void *v)
ses->ses_count, ses->serverOS, ses->serverNOS,
ses->capabilities, ses->status);
}
+ if (server->rdma)
+ seq_printf(m, "RDMA\n\t");
seq_printf(m, "TCP status: %d\n\tLocal Users To "
"Server: %d SecMode: 0x%x Req On Wire: %d",
server->tcpStatus, server->srv_count,
diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 180b335..e15fbf1 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -327,6 +327,8 @@ cifs_show_address(struct seq_file *s, struct TCP_Server_Info *server)
default:
seq_puts(s, "(unknown)");
}
+ if (server->rdma)
+ seq_puts(s, ",rdma");
}
static void
diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 808486c..09f9a71 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -530,6 +530,7 @@ struct smb_vol {
bool nopersistent:1;
bool resilient:1; /* noresilient not required since not fored for CA */
bool domainauto:1;
+ bool rdma:1;
unsigned int rsize;
unsigned int wsize;
bool sockopt_tcp_nodelay:1;
@@ -646,6 +647,12 @@ struct TCP_Server_Info {
bool sec_kerberos; /* supports plain Kerberos */
bool sec_mskerberos; /* supports legacy MS Kerberos */
bool large_buf; /* is current buffer large? */
+ /* use SMBD connection instead of socket */
+ bool rdma;
+#ifdef CONFIG_CIFS_SMB_DIRECT
+ /* point to the SMBD connection if RDMA is used instead of socket */
+ struct smbd_connection *smbd_conn;
+#endif
struct delayed_work echo; /* echo ping workqueue job */
char *smallbuf; /* pointer to current "small" buffer */
char *bigbuf; /* pointer to current "big" buffer */
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 59647eb..b5a575f 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -92,7 +92,7 @@ enum {
Opt_multiuser, Opt_sloppy, Opt_nosharesock,
Opt_persistent, Opt_nopersistent,
Opt_resilient, Opt_noresilient,
- Opt_domainauto,
+ Opt_domainauto, Opt_rdma,
/* Mount options which take numeric value */
Opt_backupuid, Opt_backupgid, Opt_uid,
@@ -183,6 +183,7 @@ static const match_table_t cifs_mount_option_tokens = {
{ Opt_resilient, "resilienthandles"},
{ Opt_noresilient, "noresilienthandles"},
{ Opt_domainauto, "domainauto"},
+ { Opt_rdma, "rdma"},
{ Opt_backupuid, "backupuid=%s" },
{ Opt_backupgid, "backupgid=%s" },
@@ -1538,6 +1539,9 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
case Opt_domainauto:
vol->domainauto = true;
break;
+ case Opt_rdma:
+ vol->rdma = true;
+ break;
/* Numeric Values */
case Opt_backupuid:
@@ -1928,6 +1932,11 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
goto cifs_parse_mount_err;
}
+ if (vol->rdma && vol->vals->protocol_id < SMB30_PROT_ID) {
+ cifs_dbg(VFS, "SMB Direct requires Version >=3.0\n");
+ goto cifs_parse_mount_err;
+ }
+
#ifndef CONFIG_KEYS
/* Muliuser mounts require CONFIG_KEYS support */
if (vol->multiuser) {
@@ -2131,6 +2140,9 @@ static int match_server(struct TCP_Server_Info *server, struct smb_vol *vol)
if (server->echo_interval != vol->echo_interval * HZ)
return 0;
+ if (server->rdma != vol->rdma)
+ return 0;
+
return 1;
}
@@ -2229,6 +2241,7 @@ cifs_get_tcp_session(struct smb_vol *volume_info)
tcp_ses->noblocksnd = volume_info->noblocksnd;
tcp_ses->noautotune = volume_info->noautotune;
tcp_ses->tcp_nodelay = volume_info->sockopt_tcp_nodelay;
+ tcp_ses->rdma = volume_info->rdma;
tcp_ses->in_flight = 0;
tcp_ses->credits = 1;
init_waitqueue_head(&tcp_ses->response_q);
--
2.7.4
next prev parent reply other threads:[~2017-11-05 5:43 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-11-05 5:43 [Patch v6 00/22] CIFS: Implement SMB Direct protocol Long Li
2017-11-05 5:43 ` [Patch v6 01/22] CIFS: SMBD: Add parameter rdata to smb2_new_read_req Long Li
2017-11-05 5:43 ` [Patch v6 02/22] CIFS: SMBD: Introduce kernel config option CONFIG_CIFS_SMB_DIRECT Long Li
2017-11-05 5:43 ` Long Li [this message]
2017-11-05 5:43 ` [Patch v6 04/22] CIFS: SMBD: Add SMB Direct protocol initial values and constants Long Li
[not found] ` <20171105054404.23886-5-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
2017-11-20 3:53 ` Steve French
2017-11-05 5:43 ` [Patch v6 09/22] CIFS: SMBD: Implement function to reconnect to a SMB Direct transport Long Li
2017-11-05 5:43 ` [Patch v6 13/22] CIFS: SMBD: Set SMB Direct maximum read or write size for I/O Long Li
[not found] ` <20171105054404.23886-1-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
2017-11-05 5:43 ` [Patch v6 05/22] CIFS: SMBD: Establish SMB Direct connection Long Li
2017-11-05 5:43 ` [Patch v6 06/22] CIFS: SMBD: export protocol initial values Long Li
2017-11-05 5:43 ` [Patch v6 07/22] CIFS: SMBD: Implement function to create a SMB Direct connection Long Li
[not found] ` <20171105054404.23886-8-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
2017-11-20 7:38 ` Leif Sahlberg
2017-11-20 16:56 ` Steve French
2017-11-05 5:43 ` [Patch v6 08/22] CIFS: SMBD: Upper layer connects to SMBDirect session Long Li
2017-11-05 5:43 ` [Patch v6 10/22] CIFS: SMBD: Upper layer reconnects to SMB Direct session Long Li
2017-11-05 5:43 ` [Patch v6 11/22] CIFS: SMBD: Implement function to destroy a SMB Direct connection Long Li
2017-11-05 5:43 ` [Patch v6 12/22] CIFS: SMBD: Upper layer destroys SMB Direct session on shutdown or umount Long Li
2017-11-05 5:43 ` [Patch v6 14/22] CIFS: SMBD: Implement function to receive data via RDMA receive Long Li
2017-11-05 5:43 ` [Patch v6 15/22] CIFS: SMBD: Upper layer receives " Long Li
2017-11-05 5:43 ` [Patch v6 16/22] CIFS: SMBD: Implement function to send data via RDMA send Long Li
2017-11-05 5:43 ` [Patch v6 17/22] CIFS: SMBD: Upper layer sends " Long Li
2017-11-05 5:44 ` [Patch v6 18/22] CIFS: SMBD: Implement RDMA memory registration Long Li
2017-11-05 5:44 ` [Patch v6 19/22] CIFS: SMBD: Upper layer performs SMB write via RDMA read through " Long Li
2017-11-05 5:44 ` [Patch v6 20/22] CIFS: SMBD: Read correct returned data length for RDMA write (SMB read) I/O Long Li
2017-11-05 5:44 ` [Patch v6 21/22] CIFS: SMBD: Upper layer performs SMB read via RDMA write through memory registration Long Li
2017-11-05 5:44 ` [Patch v6 22/22] CIFS: SMBD: Add SMB Direct debug counters Long Li
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171105054404.23886-4-longli@exchange.microsoft.com \
--to=longli@exchange.microsoft.com \
--cc=hch@infradead.org \
--cc=linux-cifs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=longli@microsoft.com \
--cc=mawilcox@microsoft.com \
--cc=samba-technical@lists.samba.org \
--cc=sfrench@samba.org \
--cc=sthemmin@microsoft.com \
--cc=ttalpey@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox