[PATCH 02/16] CIFS: Introduce SMB2 mounts as vers=2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Steve French <sfrench@xxxxxxxxxx>

As with Linux nfs client, which uses "nfsvers=" or "vers=" to
indicate which protocol to use for mount, specifying

"vers=smb2" or "vers=2"

will force an SMB2 mount. When vers is not specified CIFS is used

ie "vers=cifs" or "vers=1"

We can eventually autonegotiate down from SMB2 to CIFS
when SMB2 is stable enough to make it the default, but this
is for the future.  At that time we could also implement a
"maxprotocol" mount option as smbclient and Samba have today,
but that would be premature until SMB2 is stable.

Intially the SMB2 Kconfig option will depend on "BROKEN"
until the merge is complete, and then be "EXPERIMENTAL"
When it is no longer experimental we can consider changing
the default protocol to attempt first.

Reviewed-by: Pavel Shilovsky <piastry@xxxxxxxxxxx>
Signed-off-by: Steve French <sfrench@xxxxxxxxxx>
---
 fs/cifs/cifsglob.h |    3 +++
 fs/cifs/connect.c  |    8 ++++++++
 2 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/fs/cifs/cifsglob.h b/fs/cifs/cifsglob.h
index 4ff6313..9e28070 100644
--- a/fs/cifs/cifsglob.h
+++ b/fs/cifs/cifsglob.h
@@ -167,6 +167,9 @@ struct smb_vol {
 	umode_t file_mode;
 	umode_t dir_mode;
 	unsigned secFlg;
+#ifdef CONFIG_CIFS_SMB2
+	bool use_smb2:1; /* use SMB2 protocol rather than CIFS */
+#endif
 	bool retry:1;
 	bool intr:1;
 	bool setuids:1;
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index 9808154..955f0a3 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -1856,6 +1856,14 @@ cifs_parse_mount_options(const char *mountdata, const char *devname,
 			    strnicmp(string, "1", 1) == 0) {
 				/* This is the default */
 				break;
+			} else if (strnicmp(string, "smb2", 4) == 0 ||
+				   strnicmp(string, "2", 1) == 0) {
+#ifdef CONFIG_CIFS_SMB2
+				vol->use_smb2 = true;
+#else
+				cERROR(1, "SMB2 support not enabled");
+#endif /* CONFIG_CIFS_SMB2 */
+				break;
 			}
 			/* For all other value, error */
 			printk(KERN_WARNING "CIFS: Invalid version"
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux