summaryrefslogtreecommitdiffstats
path: root/fs/autofs/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/autofs/dir.c')
-rw-r--r--fs/autofs/dir.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/fs/autofs/dir.c b/fs/autofs/dir.c
index b71c3a819..9c114f1c2 100644
--- a/fs/autofs/dir.c
+++ b/fs/autofs/dir.c
@@ -12,29 +12,10 @@
#include "autofs_i.h"
-static int autofs_dir_readdir(struct file *filp,
- void *dirent, filldir_t filldir)
-{
- struct inode *inode=filp->f_dentry->d_inode;
-
- switch((unsigned long) filp->f_pos)
- {
- case 0:
- if (filldir(dirent, ".", 1, 0, inode->i_ino) < 0)
- return 0;
- filp->f_pos++;
- /* fall through */
- case 1:
- if (filldir(dirent, "..", 2, 1, AUTOFS_ROOT_INO) < 0)
- return 0;
- filp->f_pos++;
- /* fall through */
- }
- return 1;
-}
-
/*
- * No entries except for "." and "..", both of which are handled by the VFS layer
+ * No entries except for "." and "..", both of which are handled by the VFS
+ * layer. So all children are negative and dcache-based versions of operations
+ * are OK.
*/
static struct dentry *autofs_dir_lookup(struct inode *dir,struct dentry *dentry)
{
@@ -44,7 +25,7 @@ static struct dentry *autofs_dir_lookup(struct inode *dir,struct dentry *dentry)
struct file_operations autofs_dir_operations = {
read: generic_read_dir,
- readdir: autofs_dir_readdir,
+ readdir: dcache_readdir,
};
struct inode_operations autofs_dir_inode_operations = {