Commit f5b3f8e9 authored by Ian Kent's avatar Ian Kent Committed by Linus Torvalds

[PATCH] autofs4: allow map update recognition

Having recently repaired autofs' ability to recognise updates to maps
dynamically I found I needed to reintroduce the directory inode lookup
method (I broke the update recognition several versions ago, oops).

This patch does this and applies cleanly against 2.6.9-rc1-mm4.

As far as I can tell from testing it doesn't introduce any backward
incompatibilities.
Signed-off-by: default avatarIan Kent <raven@themaw.net>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 7b911d96
...@@ -19,7 +19,6 @@ ...@@ -19,7 +19,6 @@
#include <linux/smp_lock.h> #include <linux/smp_lock.h>
#include "autofs_i.h" #include "autofs_i.h"
static struct dentry *autofs4_dir_lookup(struct inode *,struct dentry *, struct nameidata *);
static int autofs4_dir_symlink(struct inode *,struct dentry *,const char *); static int autofs4_dir_symlink(struct inode *,struct dentry *,const char *);
static int autofs4_dir_unlink(struct inode *,struct dentry *); static int autofs4_dir_unlink(struct inode *,struct dentry *);
static int autofs4_dir_rmdir(struct inode *,struct dentry *); static int autofs4_dir_rmdir(struct inode *,struct dentry *);
...@@ -29,7 +28,7 @@ static int autofs4_dir_open(struct inode *inode, struct file *file); ...@@ -29,7 +28,7 @@ static int autofs4_dir_open(struct inode *inode, struct file *file);
static int autofs4_dir_close(struct inode *inode, struct file *file); static int autofs4_dir_close(struct inode *inode, struct file *file);
static int autofs4_dir_readdir(struct file * filp, void * dirent, filldir_t filldir); static int autofs4_dir_readdir(struct file * filp, void * dirent, filldir_t filldir);
static int autofs4_root_readdir(struct file * filp, void * dirent, filldir_t filldir); static int autofs4_root_readdir(struct file * filp, void * dirent, filldir_t filldir);
static struct dentry *autofs4_root_lookup(struct inode *,struct dentry *, struct nameidata *); static struct dentry *autofs4_lookup(struct inode *,struct dentry *, struct nameidata *);
static int autofs4_dcache_readdir(struct file *, void *, filldir_t); static int autofs4_dcache_readdir(struct file *, void *, filldir_t);
struct file_operations autofs4_root_operations = { struct file_operations autofs4_root_operations = {
...@@ -48,7 +47,7 @@ struct file_operations autofs4_dir_operations = { ...@@ -48,7 +47,7 @@ struct file_operations autofs4_dir_operations = {
}; };
struct inode_operations autofs4_root_inode_operations = { struct inode_operations autofs4_root_inode_operations = {
.lookup = autofs4_root_lookup, .lookup = autofs4_lookup,
.unlink = autofs4_dir_unlink, .unlink = autofs4_dir_unlink,
.symlink = autofs4_dir_symlink, .symlink = autofs4_dir_symlink,
.mkdir = autofs4_dir_mkdir, .mkdir = autofs4_dir_mkdir,
...@@ -56,7 +55,7 @@ struct inode_operations autofs4_root_inode_operations = { ...@@ -56,7 +55,7 @@ struct inode_operations autofs4_root_inode_operations = {
}; };
struct inode_operations autofs4_dir_inode_operations = { struct inode_operations autofs4_dir_inode_operations = {
.lookup = autofs4_dir_lookup, .lookup = autofs4_lookup,
.unlink = autofs4_dir_unlink, .unlink = autofs4_dir_unlink,
.symlink = autofs4_dir_symlink, .symlink = autofs4_dir_symlink,
.mkdir = autofs4_dir_mkdir, .mkdir = autofs4_dir_mkdir,
...@@ -439,23 +438,8 @@ static struct dentry_operations autofs4_dentry_operations = { ...@@ -439,23 +438,8 @@ static struct dentry_operations autofs4_dentry_operations = {
.d_release = autofs4_dentry_release, .d_release = autofs4_dentry_release,
}; };
/* Lookups in non-root dirs never find anything - if it's there, it's
already in the dcache */
static struct dentry *autofs4_dir_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
{
#if 0
DPRINTK("ignoring lookup of %.*s/%.*s",
dentry->d_parent->d_name.len, dentry->d_parent->d_name.name,
dentry->d_name.len, dentry->d_name.name);
#endif
dentry->d_fsdata = NULL;
d_add(dentry, NULL);
return NULL;
}
/* Lookups in the root directory */ /* Lookups in the root directory */
static struct dentry *autofs4_root_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd)
{ {
struct autofs_sb_info *sbi; struct autofs_sb_info *sbi;
int oz_mode; int oz_mode;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment