On Tuesday August 5, david@xxxxxxxxxxxxx wrote: > On Mon, Aug 04, 2008 at 02:19:12AM -0400, Chuck Lever wrote: > > So, the JFFS2 locking problem is a garbage-collection issue. I'm not > > sure this is the case with other file systems like XFS and OCFS2. My > > impression was that XFS had a transaction logging deadlock, > > Just to clarify - XFS has a directory buffer lock deadlock. That is, > while reading the contents of the directory buffer it is locked to > prevent modifications from occurring while extracting the contents. > Looking up an entry in the directory also requires the directory > buffer lock (for the same reason), so calling the lookup while > already holding the directory buffer lock (i.e from the filldir > callback) will deadlock. How much cost would it be, do you think, to drop the lock across the call to filldir? Then reclaim the lock, validate pointers etc against a 'version' counter, and restart based on the current telldir cookie if needed? To me, that is the generic solution to allowing filldir to call ->lookup. I'm just not sure what it costs to be constantly dropping and reclaiming the lock in the normal case where ->lookup isn't being called. NeilBrown -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html