VFS: Reorganise shrink_dcache_for_umount_subtree() after demise of dcache_lock
authorDavid Howells <dhowells@redhat.com>
Tue, 7 Jun 2011 13:09:30 +0000 (14:09 +0100)
committerAl Viro <viro@zeniv.linux.org.uk>
Mon, 1 Aug 2011 06:27:57 +0000 (02:27 -0400)
commit43c1c9cd244098012441b90c32304f11f1258d43
treef6d924936b376cfa3bb7bc1eec5716900a61a2cf
parentc6627c60c07c43b51ef88e352627fa786d1e1592
VFS: Reorganise shrink_dcache_for_umount_subtree() after demise of dcache_lock

Reorganise shrink_dcache_for_umount_subtree() in light of the demise of
dcache_lock.  Without that dcache_lock, there is no need for the batching of
removal of dentries from the system under it (we wanted to make intensive use
of the locked data whilst we held it, but didn't want to hold it for long at a
time).

This works, provided the preceding patch is correct in its removal of locking
on dentry->d_lock on the basis that no one should be locking these dentries any
more as the whole superblock is defunct.

With this patch, the calls to dentry_lru_del() and __d_shrink() are placed at
the point where each dentry is detached handled.

It is possible that, as an alternative, the batching should still be done -
but only for dentry_lru_del() of all a dentry's children in one go.  In such a
case, the batching would be done under dcache_lru_lock.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
fs/dcache.c