From: Long Li <longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
To: Steve French <sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org>,
linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Christoph Hellwig <hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org>,
Tom Talpey <ttalpey-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>,
Matthew Wilcox <mawilcox-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>
Cc: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>
Subject: [Patch v2 01/19] CIFS: Add RDMA mount option
Date: Sun, 20 Aug 2017 12:04:25 -0700 [thread overview]
Message-ID: <1503255883-3041-2-git-send-email-longli@exchange.microsoft.com> (raw)
In-Reply-To: <1503255883-3041-1-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
From: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>
Add "rdma" to CIFS mount option, which tells CIFS this is for connecting to a SMB server over SMBDirect. Add checks to validate this feature is only used on SMB 3.X dialects.
To connect to SMBDirect, use "mount.cifs -o rdma,vers=3.x".
Signed-off-by: Long Li <longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org>
---
fs/cifs/cifs_debug.c | 2 ++
fs/cifs/cifsfs.c | 2 ++
fs/cifs/cifsglob.h | 3 +++
fs/cifs/connect.c | 25 ++++++++++++++++++++++++-
4 files changed, 31 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 fe0c8dc..a628800 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -330,6 +330,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 8289f95..703c2fb 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -531,6 +531,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;
@@ -649,6 +650,8 @@ 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;
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 2eeaac6..d5d0ecd 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -94,7 +94,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,
@@ -185,6 +185,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" },
@@ -1541,6 +1542,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:
@@ -1931,6 +1935,21 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
goto cifs_parse_mount_err;
}
+ if (vol->rdma) {
+ switch (vol->vals->protocol_id) {
+ case SMB30_PROT_ID:
+ case SMB302_PROT_ID:
+ case SMB311_PROT_ID:
+ break;
+ default:
+ cifs_dbg(
+ VFS,
+ "SMBDirect requires Version "
+ "3.0, 3.02 or 3.1.1\n");
+ goto cifs_parse_mount_err;
+ }
+ }
+
#ifndef CONFIG_KEYS
/* Muliuser mounts require CONFIG_KEYS support */
if (vol->multiuser) {
@@ -2134,6 +2153,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;
}
@@ -2234,6 +2256,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-08-20 19:04 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-20 19:04 [Patch v2 00/19] CIFS: Implement SMBDirect Long Li
2017-08-20 19:04 ` [Patch v2 03/19] CIFS: SMBD: " Long Li
2017-08-20 19:04 ` [Patch v2 04/19] CIFS: SMBD: Add SMBDirect transport to SMB connection and Makefile Long Li
2017-08-20 19:04 ` [Patch v2 05/19] CIFS: SMBD: Connect to SMBDirect session Long Li
2017-08-20 19:04 ` [Patch v2 06/19] CIFS: SMBD: Reconnect " Long Li
2017-08-20 19:04 ` [Patch v2 07/19] CIFS: SMBD: Destroy SMBDirect session on shutdown or umount Long Li
2017-08-20 19:04 ` [Patch v2 08/19] CIFS: SMBD: Set SMBDirect maximum read or write size for I/O Long Li
2017-08-20 19:04 ` [Patch v2 09/19] CIFS: SMBD: Read data from SMBDirect Long Li
2017-08-20 19:04 ` [Patch v2 10/19] CIFS: SMBD: Send data through SMBDirect Long Li
2017-08-20 19:04 ` [Patch v2 11/19] CIFS: SMBD: Define memory registration for I/O data Long Li
2017-08-20 19:04 ` [Patch v2 12/19] CIFS: SMBD: Fix the definition for SMB2_CHANNEL_RDMA_V1_INVALIDATE Long Li
2017-08-20 19:04 ` [Patch v2 13/19] CIFS: SMBD: Use registered memory RDMA read for SMB write Long Li
2017-08-23 13:52 ` Leon Romanovsky
[not found] ` <20170823135200.GP1724-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-08-23 18:09 ` Long Li
[not found] ` <MWHPR21MB0190DBBDE3317D973FEF0E43CE850-saRRjQKJ25M/hL2NnenhuM1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-08-23 19:02 ` Leon Romanovsky
[not found] ` <20170823190214.GY1724-U/DQcQFIOTAAJjI8aNfphQ@public.gmane.org>
2017-08-23 19:10 ` Long Li
[not found] ` <MWHPR21MB0190DDCDB0B5F8FED3265A60CE850-saRRjQKJ25M/hL2NnenhuM1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-08-23 19:23 ` Leon Romanovsky
2017-08-23 19:39 ` Steve French
2017-08-20 19:04 ` [Patch v2 14/19] CIFS: SMBD: Deregister memory when finishing " Long Li
2017-08-20 19:04 ` [Patch v2 15/19] CIFS: SMBD: Add parameter rdata to smb2_new_read_req Long Li
2017-08-20 19:04 ` [Patch v2 16/19] CIFS: SMBD: Read correct returned data length for RDMA write (SMB READ) I/O Long Li
2017-08-20 19:04 ` [Patch v2 17/19] CIFS: SMBD: Implement SMB READ via RDMA write through memory registration Long Li
2017-08-20 19:04 ` [Patch v2 18/19] CIFS: SMBD: Deregister memory when finishing SMB READ Long Li
2017-08-20 19:04 ` [Patch v2 19/19] CIFS: SMBD: Add SMBDirect debug counters Long Li
[not found] ` <1503255883-3041-1-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
2017-08-20 19:04 ` Long Li [this message]
[not found] ` <1503255883-3041-2-git-send-email-longli-Lp/cVzEoVyZiJJESP9tAQJZ3qXmFLfmx@public.gmane.org>
2017-08-21 4:36 ` [Patch v2 01/19] CIFS: Add RDMA mount option Leon Romanovsky
2017-08-21 18:18 ` Long Li
2017-08-20 19:04 ` [Patch v2 02/19] CIFS: SMBD: Add SMBDirect protocol and transport constants Long Li
2017-08-21 19:15 ` [Patch v2 00/19] CIFS: Implement SMBDirect Steve Wise
2017-08-21 19:50 ` Long Li
2017-08-21 19:56 ` Steve Wise
2017-08-21 20:23 ` Long Li
2017-08-29 18:10 ` Long Li
[not found] ` <MWHPR21MB0190050F3699CDF6F52B51A2CE9F0-saRRjQKJ25M/hL2NnenhuM1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-09-05 16:30 ` Steve Wise
2017-09-05 17:42 ` Long Li
2017-08-29 18:20 ` Roland Dreier
[not found] ` <CAL1RGDUGiOqjB8n0mJmF079jm7vXrdzE2rHdzoNOexvgHScjUQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-08-29 19:31 ` Long Li
[not found] ` <CY4PR21MB01821B704C2F64F72A8A92A9CE9F0-kUhI0YP1syo7ifcEnHlXec1VXTxX1y3OvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2017-08-30 5:16 ` Stefan Metzmacher
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=1503255883-3041-2-git-send-email-longli@exchange.microsoft.com \
--to=longli-lp/cvzeovyzijjesp9taqjz3qxmflfmx@public.gmane.org \
--cc=hch-wEGCiKHe2LqWVfeAwA7xHQ@public.gmane.org \
--cc=linux-cifs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=longli-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
--cc=mawilcox-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
--cc=samba-technical-w/Ol4Ecudpl8XjKLYN78aQ@public.gmane.org \
--cc=sfrench-eUNUBHrolfbYtjvyW6yDsg@public.gmane.org \
--cc=ttalpey-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
/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