On Tue, Feb 15, 2011 at 03:49:05PM +0100, Jan Kara wrote: > inodes, that are just being freed by prune_icache(). Thus we can trigger > WARN_ON() in evict_inodes(): > if (inode->i_state & (I_NEW | I_FREEING | I_WILL_FREE)) { > WARN_ON(1); > continue; > } That WARN_ON didn't exist when I submitted the patch three month ago, but yes, it should be removed now. > Otherwise, the change looks safe to me. BTW, the iprune_sem is now used > only so that evict_inodes() can wait for prune_icache() to finish so maybe > we could have something simpler for that? I can't think of anything simple. The proper way to do it would be to make the inode lru per-sb just like the dentry lru list. That way we always hold a reference to the superblock while pruning inodes form the LRU and all associated issues go away. Dave had a patch for this as part of implementing a for_each_sb { prune dcache; prune icache; prune fs-specific cache; } algorithm. I still think it's the right way to go, but it fell under the table and I really need a way to fix the lockdep warning / rare deadlock the current scheme causes for XFS. -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html