Commit c4931db9 authored by Al Viro's avatar Al Viro
Browse files

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: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent ff09297e
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -58,7 +58,6 @@ struct autofs_info {
	struct completion expire_complete;

	struct list_head active;
	int active_count;

	struct list_head expiring;

+6 −27
Original line number Diff line number Diff line
@@ -60,39 +60,16 @@ const struct dentry_operations autofs_dentry_operations = {
	.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)
{
	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);
		ino->active_count--;
		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)
{
@@ -539,7 +516,9 @@ static struct dentry *autofs_lookup(struct inode *dir,
		dentry->d_fsdata = ino;
		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;
}