[14/15] cifs: add "multises" mount option

Submitted by Jeff Layton on March 30, 2010, 7:51 p.m.

Details

Message ID 1269978677-6817-15-git-send-email-jlayton@samba.org
State New
Headers show

Commit Message

Jeff Layton March 30, 2010, 7:51 p.m.
From: Jeff Layton <jlayton@redhat.com>

This allows someone to declare a mount as multisession mount.
Multisession mounts also imply "noperm" since we want to allow
the server to handle permission checking. It also (for now)
requires Kerberos authentication. Eventually, we could expand
this to other authtypes, but that requires a scheme to allow
per-user credential stashing in some form.

Signed-off-by: Jeff Layton <jlayton@redhat.com>
---
 fs/cifs/connect.c |    7 +++++++
 1 files changed, 7 insertions(+), 0 deletions(-)

Patch hide | download patch | download mbox

diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index b213a9b..9bf590d 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -96,6 +96,7 @@  struct smb_vol {
 	bool noblocksnd:1;
 	bool noautotune:1;
 	bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
+	bool multises:1;
 	unsigned int rsize;
 	unsigned int wsize;
 	bool sockopt_tcp_nodelay:1;
@@ -1339,6 +1340,9 @@  cifs_parse_mount_options(char *options, const char *devname,
 			printk(KERN_WARNING "CIFS: Mount option noac not "
 				"supported. Instead set "
 				"/proc/fs/cifs/LookupCacheEnabled to 0\n");
+		} else if (strnicmp(data, "multises", 8) == 0) {
+			vol->multises = 1;
+			vol->secFlg |= CIFSSEC_MAY_KRB5;
 		} else
 			printk(KERN_WARNING "CIFS: Unknown mount option %s\n",
 						data);
@@ -2400,6 +2404,9 @@  static void setup_cifs_sb(struct smb_vol *pvolume_info,
 		cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_OVERR_GID;
 	if (pvolume_info->dynperm)
 		cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DYNPERM;
+	if (pvolume_info->multises)
+		cifs_sb->mnt_cifs_flags |= (CIFS_MOUNT_MULTISES |
+					    CIFS_MOUNT_NO_PERM);
 	if (pvolume_info->direct_io) {
 		cFYI(1, ("mounting share using direct i/o"));
 		cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO;