fs: remove inode_lock from iput_final and prune_icache
authorDave Chinner <dchinner@redhat.com>
Tue, 22 Mar 2011 11:23:39 +0000 (22:23 +1100)
committerAl Viro <viro@zeniv.linux.org.uk>
Fri, 25 Mar 2011 01:16:32 +0000 (21:16 -0400)
commitf283c86afe6aa70b733d1ecebad5d9464943b774
treebeaeca959996f2d8a00a997c56932dc5916bfec8
parent02afc410f363f98ac4f186341e38dcec13fc0e60
fs: remove inode_lock from iput_final and prune_icache

Now that inode state changes are protected by the inode->i_lock and
the inode LRU manipulations by the inode_lru_lock, we can remove the
inode_lock from prune_icache and the initial part of iput_final().

instead of using the inode_lock to protect the inode during
iput_final, use the inode->i_lock instead. This protects the inode
against new references being taken while we change the inode state
to I_FREEING, as well as preventing prune_icache from grabbing the
inode while we are manipulating it. Hence we no longer need the
inode_lock in iput_final prior to setting I_FREEING on the inode.

For prune_icache, we no longer need the inode_lock to protect the
LRU list, and the inodes themselves are protected against freeing
races by the inode->i_lock. Hence we can lift the inode_lock from
prune_icache as well.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Documentation/filesystems/Locking
Documentation/filesystems/porting
Documentation/filesystems/vfs.txt
fs/inode.c
fs/logfs/inode.c