On Wed, Apr 02, 2008 at 10:12:15AM +0200, Jan Kara wrote: > On Tue 01-04-08 17:23:34, Erez Zadok wrote: > <snip> <snip> > > Jan, I'll be happy to test this, but I don't understand two things about > > this patch: > > > > 1. Is it safe to unlock and re-lock inode_lock temporarily within the loop? > > > > 2. What's the motivation behind having the second toput_inode pointer? It > > appears that the first iteration through the loop, toput_inode will be > > NULL, so we'll be iput'ing a NULL pointer (which is ok). So you're > > trying to iput the previous inode pointer that the list iterated over, > > right? Is that intended? > I'll try to explain the locking here: > 1) We are not allowed to call into __invalidate_mapping_pages() with > inode_lock held - that it the bug lockdep is complaining about. Moreover it > leads to rather long waiting times for inode_lock (quite possibly several > seconds). When you have tens of millions of cached inodes, it can take somewhat longer than a few seconds.... :/ Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html