aboutsummaryrefslogtreecommitdiffstats
path: root/fs/cifs/connect.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-07-30 08:56:00 -0400
committerSteve French <sfrench@us.ibm.com>2010-09-29 15:04:31 -0400
commit736a33205969c16f81d747db14ff4c0f133609a6 (patch)
tree39705109ad4aee778be5d2b3dfe2f3e7c9ad246c /fs/cifs/connect.c
parent1b12b9c15b4371d83b729b8fc18c670e78a1479b (diff)
cifs: add "mfsymlinks" mount option
This is the start for an implementation of "Minshall+French Symlinks" (see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks). Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/connect.c')
-rw-r--r--fs/cifs/connect.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fs/cifs/connect.c b/fs/cifs/connect.c
index fa884520fb84..435b912f5de5 100644
--- a/fs/cifs/connect.c
+++ b/fs/cifs/connect.c
@@ -100,6 +100,7 @@ struct smb_vol {
100 bool noautotune:1; 100 bool noautotune:1;
101 bool nostrictsync:1; /* do not force expensive SMBflush on every sync */ 101 bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
102 bool fsc:1; /* enable fscache */ 102 bool fsc:1; /* enable fscache */
103 bool mfsymlinks:1; /* use Minshall+French Symlinks */
103 unsigned int rsize; 104 unsigned int rsize;
104 unsigned int wsize; 105 unsigned int wsize;
105 bool sockopt_tcp_nodelay:1; 106 bool sockopt_tcp_nodelay:1;
@@ -1342,6 +1343,8 @@ cifs_parse_mount_options(char *options, const char *devname,
1342 "/proc/fs/cifs/LookupCacheEnabled to 0\n"); 1343 "/proc/fs/cifs/LookupCacheEnabled to 0\n");
1343 } else if (strnicmp(data, "fsc", 3) == 0) { 1344 } else if (strnicmp(data, "fsc", 3) == 0) {
1344 vol->fsc = true; 1345 vol->fsc = true;
1346 } else if (strnicmp(data, "mfsymlinks", 10) == 0) {
1347 vol->mfsymlinks = true;
1345 } else 1348 } else
1346 printk(KERN_WARNING "CIFS: Unknown mount option %s\n", 1349 printk(KERN_WARNING "CIFS: Unknown mount option %s\n",
1347 data); 1350 data);
@@ -2554,6 +2557,14 @@ static void setup_cifs_sb(struct smb_vol *pvolume_info,
2554 cFYI(1, "mounting share using direct i/o"); 2557 cFYI(1, "mounting share using direct i/o");
2555 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO; 2558 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO;
2556 } 2559 }
2560 if (pvolume_info->mfsymlinks) {
2561 if (pvolume_info->sfu_emul) {
2562 cERROR(1, "mount option mfsymlinks ignored if sfu "
2563 "mount option is used");
2564 } else {
2565 cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_MF_SYMLINKS;
2566 }
2567 }
2557 2568
2558 if ((pvolume_info->cifs_acl) && (pvolume_info->dynperm)) 2569 if ((pvolume_info->cifs_acl) && (pvolume_info->dynperm))
2559 cERROR(1, "mount option dynperm ignored if cifsacl " 2570 cERROR(1, "mount option dynperm ignored if cifsacl "