Commit 41ca1974 authored by Al Viro's avatar Al Viro

autofs: get rid of pointless checks around ->count handling

* IS_ROOT can't be true for unlink or rmdir victim
* any positive autofs dentry has non-NULL autofs_dentry_ino()
* autofs symlink can't have ->count other than 1
* autofs empty directory can't have ->count other than 1
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent e509d6e9
...@@ -571,8 +571,7 @@ static int autofs_dir_symlink(struct inode *dir, ...@@ -571,8 +571,7 @@ static int autofs_dir_symlink(struct inode *dir,
dget(dentry); dget(dentry);
atomic_inc(&ino->count); atomic_inc(&ino->count);
p_ino = autofs_dentry_ino(dentry->d_parent); p_ino = autofs_dentry_ino(dentry->d_parent);
if (p_ino && !IS_ROOT(dentry)) atomic_inc(&p_ino->count);
atomic_inc(&p_ino->count);
dir->i_mtime = current_time(dir); dir->i_mtime = current_time(dir);
...@@ -610,11 +609,9 @@ static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry) ...@@ -610,11 +609,9 @@ static int autofs_dir_unlink(struct inode *dir, struct dentry *dentry)
if (sbi->flags & AUTOFS_SBI_CATATONIC) if (sbi->flags & AUTOFS_SBI_CATATONIC)
return -EACCES; return -EACCES;
if (atomic_dec_and_test(&ino->count)) { atomic_dec(&ino->count);
p_ino = autofs_dentry_ino(dentry->d_parent); p_ino = autofs_dentry_ino(dentry->d_parent);
if (p_ino && !IS_ROOT(dentry)) atomic_dec(&p_ino->count);
atomic_dec(&p_ino->count);
}
dput(ino->dentry); dput(ino->dentry);
d_inode(dentry)->i_size = 0; d_inode(dentry)->i_size = 0;
...@@ -706,11 +703,9 @@ static int autofs_dir_rmdir(struct inode *dir, struct dentry *dentry) ...@@ -706,11 +703,9 @@ static int autofs_dir_rmdir(struct inode *dir, struct dentry *dentry)
if (sbi->version < 5) if (sbi->version < 5)
autofs_clear_leaf_automount_flags(dentry); autofs_clear_leaf_automount_flags(dentry);
if (atomic_dec_and_test(&ino->count)) { atomic_dec(&ino->count);
p_ino = autofs_dentry_ino(dentry->d_parent); p_ino = autofs_dentry_ino(dentry->d_parent);
if (p_ino && dentry->d_parent != dentry) atomic_dec(&p_ino->count);
atomic_dec(&p_ino->count);
}
dput(ino->dentry); dput(ino->dentry);
d_inode(dentry)->i_size = 0; d_inode(dentry)->i_size = 0;
clear_nlink(d_inode(dentry)); clear_nlink(d_inode(dentry));
...@@ -758,8 +753,7 @@ static int autofs_dir_mkdir(struct inode *dir, ...@@ -758,8 +753,7 @@ static int autofs_dir_mkdir(struct inode *dir,
dget(dentry); dget(dentry);
atomic_inc(&ino->count); atomic_inc(&ino->count);
p_ino = autofs_dentry_ino(dentry->d_parent); p_ino = autofs_dentry_ino(dentry->d_parent);
if (p_ino && !IS_ROOT(dentry)) atomic_inc(&p_ino->count);
atomic_inc(&p_ino->count);
inc_nlink(dir); inc_nlink(dir);
dir->i_mtime = current_time(dir); dir->i_mtime = current_time(dir);
......
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