diff options
author | Christoph Hellwig <hch@lst.de> | 2011-03-15 21:51:24 +0100 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2011-03-16 09:56:03 -0400 |
commit | bab1d9444d9a147f1dc3478dd06c16f490227f3e (patch) | |
tree | e5dd5220c976f604163c0b96945af3ee0be1fe24 /fs/file_table.c | |
parent | 5229645bdc35f1cc43eb8b25b6993c8fa58b4b43 (diff) | |
download | linux-bab1d9444d9a147f1dc3478dd06c16f490227f3e.tar.gz linux-bab1d9444d9a147f1dc3478dd06c16f490227f3e.tar.bz2 linux-bab1d9444d9a147f1dc3478dd06c16f490227f3e.zip |
prune back iprune_sem
iprune_sem is continously giving us lockdep warnings because we do take it in
read mode in the reclaim path, but we're also doing non-NOFS allocations under
it taken in write mode.
Taking a bit deeper look at it I think it's fixable quite trivially:
- for invalidate_inodes we do not need iprune_sem at all. We have an active
reference on the superblock, so the filesystem is not going away until it
has finished.
- for evict_inodes we do need it, to make sure prune_icache has done it's
work before we tear down the superblock. But there is no reason to
hold it over the actual reclaim operation - it's enough to cycle through
it after the actual reclaim to make sure we wait for any pending
prune_icache to complete. We just have to remove the WARN_ON for
otherwise busy inodes as they can actually happen now.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/file_table.c')
0 files changed, 0 insertions, 0 deletions