• Christoph Hellwig's avatar
    prune back iprune_sem · bab1d944
    Christoph Hellwig authored
    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: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    bab1d944
inode.c 44.3 KB