summaryrefslogtreecommitdiffstats
path: root/fs/autofs4/root.c
diff options
context:
space:
mode:
authorDavid Howells <dhowells@redhat.com>2011-01-15 11:51:57 +0100
committerAl Viro <viro@zeniv.linux.org.uk>2011-01-16 02:07:49 +0100
commitb650c858c26bd9ba29ebc82d30f09355845a294a (patch)
treecd3749a722a81425263e3a2b1d82898586665acf /fs/autofs4/root.c
parentUnexport do_add_mount() and add in follow_automount(), not ->d_automount() (diff)
downloadlinux-b650c858c26bd9ba29ebc82d30f09355845a294a.tar.xz
linux-b650c858c26bd9ba29ebc82d30f09355845a294a.zip
autofs4: Merge the remaining dentry ops tables
Merge the remaining autofs4 dentry ops tables. It doesn't matter if d_automount and d_manage are present on something that's not mountable or holdable as these ops are only used if the appropriate flags are set in dentry->d_flags. [AV] switch to ->s_d_op, since now _everything_ on autofs4 is using the same dentry_operations. Signed-off-by: David Howells <dhowells@redhat.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/autofs4/root.c')
-rw-r--r--fs/autofs4/root.c17
1 files changed, 2 insertions, 15 deletions
diff --git a/fs/autofs4/root.c b/fs/autofs4/root.c
index dbd95512808c..1dba035fc376 100644
--- a/fs/autofs4/root.c
+++ b/fs/autofs4/root.c
@@ -66,13 +66,7 @@ const struct inode_operations autofs4_dir_inode_operations = {
.rmdir = autofs4_dir_rmdir,
};
-/* For dentries that don't initiate mounting */
const struct dentry_operations autofs4_dentry_operations = {
- .d_release = autofs4_dentry_release,
-};
-
-/* For dentries that do initiate mounting */
-const struct dentry_operations autofs4_mount_dentry_operations = {
.d_automount = autofs4_d_automount,
.d_manage = autofs4_d_manage,
.d_release = autofs4_dentry_release,
@@ -500,8 +494,6 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
if (active) {
return active;
} else {
- d_set_d_op(dentry, &autofs4_dentry_operations);
-
/*
* A dentry that is not within the root can never trigger a
* mount operation, unless the directory already exists, so we
@@ -512,10 +504,8 @@ static struct dentry *autofs4_lookup(struct inode *dir, struct dentry *dentry, s
return ERR_PTR(-ENOENT);
/* Mark entries in the root as mount triggers */
- if (autofs_type_indirect(sbi->type) && IS_ROOT(dentry->d_parent)) {
- d_set_d_op(dentry, &autofs4_mount_dentry_operations);
+ if (autofs_type_indirect(sbi->type) && IS_ROOT(dentry->d_parent))
__managed_dentry_set_managed(dentry);
- }
ino = autofs4_init_ino(NULL, sbi, 0555);
if (!ino)
@@ -572,8 +562,6 @@ static int autofs4_dir_symlink(struct inode *dir,
}
d_add(dentry, inode);
- d_set_d_op(dentry, &autofs4_dentry_operations);
-
dentry->d_fsdata = ino;
ino->dentry = dget(dentry);
atomic_inc(&ino->count);
@@ -848,8 +836,7 @@ static inline int autofs4_ask_umount(struct vfsmount *mnt, int __user *p)
int is_autofs4_dentry(struct dentry *dentry)
{
return dentry && dentry->d_inode &&
- (dentry->d_op == &autofs4_mount_dentry_operations ||
- dentry->d_op == &autofs4_dentry_operations) &&
+ dentry->d_op == &autofs4_dentry_operations &&
dentry->d_fsdata != NULL;
}