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>
This commit is contained in:
parent
1b12b9c15b
commit
736a332059
3 changed files with 18 additions and 0 deletions
|
@ -527,6 +527,11 @@ A partial list of the supported mount options follows:
|
||||||
SFU does). In the future the bottom 9 bits of the
|
SFU does). In the future the bottom 9 bits of the
|
||||||
mode also will be emulated using queries of the security
|
mode also will be emulated using queries of the security
|
||||||
descriptor (ACL).
|
descriptor (ACL).
|
||||||
|
mfsymlinks Enable support for Minshall+French symlinks
|
||||||
|
(see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks)
|
||||||
|
This option is ignored when specified together with the
|
||||||
|
'sfu' option. Minshall+French symlinks are used even if
|
||||||
|
the server supports the CIFS Unix Extensions.
|
||||||
sign Must use packet signing (helps avoid unwanted data modification
|
sign Must use packet signing (helps avoid unwanted data modification
|
||||||
by intermediate systems in the route). Note that signing
|
by intermediate systems in the route). Note that signing
|
||||||
does not work with lanman or plaintext authentication.
|
does not work with lanman or plaintext authentication.
|
||||||
|
|
|
@ -441,6 +441,8 @@ cifs_show_options(struct seq_file *s, struct vfsmount *m)
|
||||||
seq_printf(s, ",dynperm");
|
seq_printf(s, ",dynperm");
|
||||||
if (m->mnt_sb->s_flags & MS_POSIXACL)
|
if (m->mnt_sb->s_flags & MS_POSIXACL)
|
||||||
seq_printf(s, ",acl");
|
seq_printf(s, ",acl");
|
||||||
|
if (cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MF_SYMLINKS)
|
||||||
|
seq_printf(s, ",mfsymlinks");
|
||||||
|
|
||||||
seq_printf(s, ",rsize=%d", cifs_sb->rsize);
|
seq_printf(s, ",rsize=%d", cifs_sb->rsize);
|
||||||
seq_printf(s, ",wsize=%d", cifs_sb->wsize);
|
seq_printf(s, ",wsize=%d", cifs_sb->wsize);
|
||||||
|
|
|
@ -100,6 +100,7 @@ struct smb_vol {
|
||||||
bool noautotune:1;
|
bool noautotune:1;
|
||||||
bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
|
bool nostrictsync:1; /* do not force expensive SMBflush on every sync */
|
||||||
bool fsc:1; /* enable fscache */
|
bool fsc:1; /* enable fscache */
|
||||||
|
bool mfsymlinks:1; /* use Minshall+French Symlinks */
|
||||||
unsigned int rsize;
|
unsigned int rsize;
|
||||||
unsigned int wsize;
|
unsigned int wsize;
|
||||||
bool sockopt_tcp_nodelay:1;
|
bool sockopt_tcp_nodelay:1;
|
||||||
|
@ -1342,6 +1343,8 @@ cifs_parse_mount_options(char *options, const char *devname,
|
||||||
"/proc/fs/cifs/LookupCacheEnabled to 0\n");
|
"/proc/fs/cifs/LookupCacheEnabled to 0\n");
|
||||||
} else if (strnicmp(data, "fsc", 3) == 0) {
|
} else if (strnicmp(data, "fsc", 3) == 0) {
|
||||||
vol->fsc = true;
|
vol->fsc = true;
|
||||||
|
} else if (strnicmp(data, "mfsymlinks", 10) == 0) {
|
||||||
|
vol->mfsymlinks = true;
|
||||||
} else
|
} else
|
||||||
printk(KERN_WARNING "CIFS: Unknown mount option %s\n",
|
printk(KERN_WARNING "CIFS: Unknown mount option %s\n",
|
||||||
data);
|
data);
|
||||||
|
@ -2554,6 +2557,14 @@ static void setup_cifs_sb(struct smb_vol *pvolume_info,
|
||||||
cFYI(1, "mounting share using direct i/o");
|
cFYI(1, "mounting share using direct i/o");
|
||||||
cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO;
|
cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_DIRECT_IO;
|
||||||
}
|
}
|
||||||
|
if (pvolume_info->mfsymlinks) {
|
||||||
|
if (pvolume_info->sfu_emul) {
|
||||||
|
cERROR(1, "mount option mfsymlinks ignored if sfu "
|
||||||
|
"mount option is used");
|
||||||
|
} else {
|
||||||
|
cifs_sb->mnt_cifs_flags |= CIFS_MOUNT_MF_SYMLINKS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((pvolume_info->cifs_acl) && (pvolume_info->dynperm))
|
if ((pvolume_info->cifs_acl) && (pvolume_info->dynperm))
|
||||||
cERROR(1, "mount option dynperm ignored if cifsacl "
|
cERROR(1, "mount option dynperm ignored if cifsacl "
|
||||||
|
|
Loading…
Reference in a new issue