From 292c5ee802e9b969b84ee671a5e3001d94230f5b Mon Sep 17 00:00:00 2001 From: Al Viro Date: Mon, 17 Jan 2011 00:47:38 -0500 Subject: autofs4: keep symlink body in inode->i_private gets rid of all ->free()/->u.symlink machinery in autofs; we simply keep symlink bodies in inode->i_private and free them in ->evict_inode(). Acked-by: Ian Kent Signed-off-by: Al Viro --- fs/autofs4/inode.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) (limited to 'fs/autofs4/inode.c') diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c index 9e1a9dad23e1..cf8abc793d50 100644 --- a/fs/autofs4/inode.c +++ b/fs/autofs4/inode.c @@ -22,14 +22,6 @@ #include "autofs_i.h" #include -static void ino_lnkfree(struct autofs_info *ino) -{ - if (ino->u.symlink) { - kfree(ino->u.symlink); - ino->u.symlink = NULL; - } -} - struct autofs_info *autofs4_init_ino(struct autofs_info *ino, struct autofs_sb_info *sbi, mode_t mode) { @@ -60,16 +52,6 @@ struct autofs_info *autofs4_init_ino(struct autofs_info *ino, ino->sbi = sbi; - if (reinit && ino->free) - (ino->free)(ino); - - memset(&ino->u, 0, sizeof(ino->u)); - - ino->free = NULL; - - if (S_ISLNK(mode)) - ino->free = ino_lnkfree; - return ino; } @@ -79,8 +61,6 @@ void autofs4_free_ino(struct autofs_info *ino) ino->dentry->d_fsdata = NULL; ino->dentry = NULL; } - if (ino->free) - (ino->free)(ino); kfree(ino); } @@ -136,9 +116,16 @@ static int autofs4_show_options(struct seq_file *m, struct vfsmount *mnt) return 0; } +static void autofs4_evict_inode(struct inode *inode) +{ + end_writeback(inode); + kfree(inode->i_private); +} + static const struct super_operations autofs4_sops = { .statfs = simple_statfs, .show_options = autofs4_show_options, + .evict_inode = autofs4_evict_inode, }; enum {Opt_err, Opt_fd, Opt_uid, Opt_gid, Opt_pgrp, Opt_minproto, Opt_maxproto, -- cgit v1.2.3-59-g8ed1b