diff options
author | Stefan Metzmacher <metze@samba.org> | 2010-07-30 08:56:00 -0400 |
---|---|---|
committer | Steve French <sfrench@us.ibm.com> | 2010-09-29 15:04:31 -0400 |
commit | 736a33205969c16f81d747db14ff4c0f133609a6 (patch) | |
tree | 39705109ad4aee778be5d2b3dfe2f3e7c9ad246c /fs/cifs/connect.c | |
parent | 1b12b9c15b4371d83b729b8fc18c670e78a1479b (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.c | 11 |
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 " |