Skip to content

Commit

Permalink
autofs4: clean ->d_release() and autofs4_free_ino() up
Browse files Browse the repository at this point in the history
The latter is called only when both ino and dentry are about to
be freed, so cleaning ->d_fsdata and ->dentry is pointless.

Acked-by: Ian Kent <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Al Viro committed Jan 18, 2011
1 parent 26e6c91 commit b89b12b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 19 deletions.
1 change: 0 additions & 1 deletion fs/autofs4/autofs_i.h
Original file line number Diff line number Diff line change
Expand Up @@ -338,5 +338,4 @@ static inline void autofs4_del_expiring(struct dentry *dentry)
return;
}

void autofs4_dentry_release(struct dentry *);
extern void autofs4_kill_sb(struct super_block *);
4 changes: 0 additions & 4 deletions fs/autofs4/inode.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ void autofs4_clean_ino(struct autofs_info *ino)

void autofs4_free_ino(struct autofs_info *ino)
{
if (ino->dentry) {
ino->dentry->d_fsdata = NULL;
ino->dentry = NULL;
}
kfree(ino);
}

Expand Down
30 changes: 16 additions & 14 deletions fs/autofs4/root.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ static int autofs4_dir_open(struct inode *inode, struct file *file);
static struct dentry *autofs4_lookup(struct inode *,struct dentry *, struct nameidata *);
static struct vfsmount *autofs4_d_automount(struct path *);
static int autofs4_d_manage(struct dentry *, bool, bool);
static void autofs4_dentry_release(struct dentry *);

const struct file_operations autofs4_root_operations = {
.open = dcache_dir_open,
Expand Down Expand Up @@ -138,25 +139,26 @@ static int autofs4_dir_open(struct inode *inode, struct file *file)
return dcache_dir_open(inode, file);
}

void autofs4_dentry_release(struct dentry *de)
static void autofs4_dentry_release(struct dentry *de)
{
struct autofs_info *inf;
struct autofs_info *ino = autofs4_dentry_ino(de);
struct autofs_sb_info *sbi = autofs4_sbi(de->d_sb);

DPRINTK("releasing %p", de);

inf = autofs4_dentry_ino(de);
if (inf) {
struct autofs_sb_info *sbi = autofs4_sbi(de->d_sb);
if (sbi) {
spin_lock(&sbi->lookup_lock);
if (!list_empty(&inf->active))
list_del(&inf->active);
if (!list_empty(&inf->expiring))
list_del(&inf->expiring);
spin_unlock(&sbi->lookup_lock);
}
autofs4_free_ino(inf);
if (!ino)
return;

if (sbi) {
spin_lock(&sbi->lookup_lock);
if (!list_empty(&ino->active))
list_del(&ino->active);
if (!list_empty(&ino->expiring))
list_del(&ino->expiring);
spin_unlock(&sbi->lookup_lock);
}

autofs4_free_ino(ino);
}

static struct dentry *autofs4_lookup_active(struct dentry *dentry)
Expand Down

0 comments on commit b89b12b

Please sign in to comment.