summaryrefslogtreecommitdiffstats
path: root/fs/cifs/readdir.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2010-08-05 21:19:56 +0200
committerSteve French <sfrench@us.ibm.com>2010-09-29 19:04:31 +0000
commit1b12b9c15b4371d83b729b8fc18c670e78a1479b (patch)
treef82c9b0d01cdc5e64765780403f460e9e0d8496b /fs/cifs/readdir.c
parent8713d01db8bf948eb9632726f529ec4f821bb025 (diff)
downloadlinux-1b12b9c15b4371d83b729b8fc18c670e78a1479b.tar.gz
linux-1b12b9c15b4371d83b729b8fc18c670e78a1479b.tar.bz2
linux-1b12b9c15b4371d83b729b8fc18c670e78a1479b.zip
cifs: use Minshall+French symlink functions
If configured, Minshall+French Symlinks are used against all servers. If the server supports UNIX Extensions, we still create Minshall+French Symlinks on write, but on read we fallback to UNIX Extension symlinks. Signed-off-by: Stefan Metzmacher <metze@samba.org> Signed-off-by: Steve French <sfrench@us.ibm.com>
Diffstat (limited to 'fs/cifs/readdir.c')
-rw-r--r--fs/cifs/readdir.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/fs/cifs/readdir.c b/fs/cifs/readdir.c
index d5e591fab475..6a8b417babab 100644
--- a/fs/cifs/readdir.c
+++ b/fs/cifs/readdir.c
@@ -738,6 +738,15 @@ static int cifs_filldir(char *pfindEntry, struct file *file, filldir_t filldir,
cifs_autodisable_serverino(cifs_sb);
}
+ if ((cifs_sb->mnt_cifs_flags & CIFS_MOUNT_MF_SYMLINKS) &&
+ CIFSCouldBeMFSymlink(&fattr))
+ /*
+ * trying to get the type and mode can be slow,
+ * so just call those regular files for now, and mark
+ * for reval
+ */
+ fattr.cf_flags |= CIFS_FATTR_NEED_REVAL;
+
ino = cifs_uniqueid_to_ino_t(fattr.cf_uniqueid);
tmp_dentry = cifs_readdir_lookup(file->f_dentry, &qstring, &fattr);