mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 20:54:10 +08:00
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>
This commit is contained in:
parent
ea5b778a8b
commit
b650c858c2
@ -207,7 +207,6 @@ extern const struct inode_operations autofs4_dir_inode_operations;
|
||||
extern const struct file_operations autofs4_dir_operations;
|
||||
extern const struct file_operations autofs4_root_operations;
|
||||
extern const struct dentry_operations autofs4_dentry_operations;
|
||||
extern const struct dentry_operations autofs4_mount_dentry_operations;
|
||||
|
||||
/* VFS automount flags management functions */
|
||||
|
||||
|
@ -276,6 +276,7 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
||||
s->s_blocksize_bits = 10;
|
||||
s->s_magic = AUTOFS_SUPER_MAGIC;
|
||||
s->s_op = &autofs4_sops;
|
||||
s->s_d_op = &autofs4_dentry_operations;
|
||||
s->s_time_gran = 1;
|
||||
|
||||
/*
|
||||
@ -293,7 +294,6 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
||||
goto fail_iput;
|
||||
pipe = NULL;
|
||||
|
||||
d_set_d_op(root, &autofs4_dentry_operations);
|
||||
root->d_fsdata = ino;
|
||||
|
||||
/* Can this call block? */
|
||||
@ -304,10 +304,8 @@ int autofs4_fill_super(struct super_block *s, void *data, int silent)
|
||||
goto fail_dput;
|
||||
}
|
||||
|
||||
if (autofs_type_trigger(sbi->type)) {
|
||||
d_set_d_op(root, &autofs4_mount_dentry_operations);
|
||||
if (autofs_type_trigger(sbi->type))
|
||||
__managed_dentry_set_managed(root);
|
||||
}
|
||||
|
||||
root_inode->i_fop = &autofs4_root_operations;
|
||||
root_inode->i_op = &autofs4_dir_inode_operations;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user