get rid of autofs_info->active_count
autofs_add_active() is always called only once (and on a dentry with freshly allocated ino, at that). autofs_del_active() is never called more than once. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
ff09297ec9
commit
c4931db9b0
|
@ -58,7 +58,6 @@ struct autofs_info {
|
||||||
struct completion expire_complete;
|
struct completion expire_complete;
|
||||||
|
|
||||||
struct list_head active;
|
struct list_head active;
|
||||||
int active_count;
|
|
||||||
|
|
||||||
struct list_head expiring;
|
struct list_head expiring;
|
||||||
|
|
||||||
|
|
|
@ -60,38 +60,15 @@ const struct dentry_operations autofs_dentry_operations = {
|
||||||
.d_release = autofs_dentry_release,
|
.d_release = autofs_dentry_release,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void autofs_add_active(struct dentry *dentry)
|
|
||||||
{
|
|
||||||
struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb);
|
|
||||||
struct autofs_info *ino;
|
|
||||||
|
|
||||||
ino = autofs_dentry_ino(dentry);
|
|
||||||
if (ino) {
|
|
||||||
spin_lock(&sbi->lookup_lock);
|
|
||||||
if (!ino->active_count) {
|
|
||||||
if (list_empty(&ino->active))
|
|
||||||
list_add(&ino->active, &sbi->active_list);
|
|
||||||
}
|
|
||||||
ino->active_count++;
|
|
||||||
spin_unlock(&sbi->lookup_lock);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void autofs_del_active(struct dentry *dentry)
|
static void autofs_del_active(struct dentry *dentry)
|
||||||
{
|
{
|
||||||
struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb);
|
struct autofs_sb_info *sbi = autofs_sbi(dentry->d_sb);
|
||||||
struct autofs_info *ino;
|
struct autofs_info *ino;
|
||||||
|
|
||||||
ino = autofs_dentry_ino(dentry);
|
ino = autofs_dentry_ino(dentry);
|
||||||
if (ino) {
|
spin_lock(&sbi->lookup_lock);
|
||||||
spin_lock(&sbi->lookup_lock);
|
list_del_init(&ino->active);
|
||||||
ino->active_count--;
|
spin_unlock(&sbi->lookup_lock);
|
||||||
if (!ino->active_count) {
|
|
||||||
if (!list_empty(&ino->active))
|
|
||||||
list_del_init(&ino->active);
|
|
||||||
}
|
|
||||||
spin_unlock(&sbi->lookup_lock);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int autofs_dir_open(struct inode *inode, struct file *file)
|
static int autofs_dir_open(struct inode *inode, struct file *file)
|
||||||
|
@ -539,7 +516,9 @@ static struct dentry *autofs_lookup(struct inode *dir,
|
||||||
dentry->d_fsdata = ino;
|
dentry->d_fsdata = ino;
|
||||||
ino->dentry = dentry;
|
ino->dentry = dentry;
|
||||||
|
|
||||||
autofs_add_active(dentry);
|
spin_lock(&sbi->lookup_lock);
|
||||||
|
list_add(&ino->active, &sbi->active_list);
|
||||||
|
spin_unlock(&sbi->lookup_lock);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue