summaryrefslogtreecommitdiffstats
path: root/fs/inode.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2010-06-07 19:23:20 +0200
committerAl Viro <viro@zeniv.linux.org.uk>2010-08-09 22:48:34 +0200
commit30140837f256558c943636245ab90897a9455a70 (patch)
tree71ab647be533cd520eb665a48d489e46e4c2fd8c /fs/inode.c
parentfs/inode.c:evict() doesn't care about delete vs. non-delete paths now (diff)
downloadlinux-30140837f256558c943636245ab90897a9455a70.tar.xz
linux-30140837f256558c943636245ab90897a9455a70.zip
fs/inode.c:clear_inode() is gone
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/inode.c')
-rw-r--r--fs/inode.c28
1 files changed, 4 insertions, 24 deletions
diff --git a/fs/inode.c b/fs/inode.c
index 8320bef7177e..82ca3562a688 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -306,29 +306,6 @@ void end_writeback(struct inode *inode)
}
EXPORT_SYMBOL(end_writeback);
-/**
- * clear_inode - clear an inode
- * @inode: inode to clear
- *
- * This is called by the filesystem to tell us
- * that the inode is no longer useful. We just
- * terminate it with extreme prejudice.
- */
-void clear_inode(struct inode *inode)
-{
- might_sleep();
- invalidate_inode_buffers(inode);
-
- BUG_ON(inode->i_data.nrpages);
- BUG_ON(!(inode->i_state & I_FREEING));
- BUG_ON(inode->i_state & I_CLEAR);
- inode_sync_wait(inode);
- if (inode->i_sb->s_op->clear_inode)
- inode->i_sb->s_op->clear_inode(inode);
- inode->i_state = I_FREEING | I_CLEAR;
-}
-EXPORT_SYMBOL(clear_inode);
-
static void evict(struct inode *inode)
{
const struct super_operations *op = inode->i_sb->s_op;
@@ -338,7 +315,10 @@ static void evict(struct inode *inode)
} else {
if (inode->i_data.nrpages)
truncate_inode_pages(&inode->i_data, 0);
- clear_inode(inode);
+ invalidate_inode_buffers(inode);
+ end_writeback(inode);
+ if (op->clear_inode)
+ op->clear_inode(inode);
}
if (S_ISBLK(inode->i_mode) && inode->i_bdev)
bd_forget(inode);