On Wed, Nov 24, 2010 at 08:12:58AM +1100, Dave Chinner wrote:
> It is supposed to be handled by the re-initialisation of the
> ip->i_iolock in ->evict_inode (xfs_fs_evict_inode). An inode found
> in the reclaim state must have passed through this reinitialisation,
> so from a lockdep perspective the iolock in the vfs path is a
> different context to the iolock in the reclaim path. That fixed all
> the non-reclaim state related lockdep false positives, so Perhaps
> there is an issue with the lockdep reclaim state checking that does
> not interact well with re-initialised lock contexts?
I've been looking through this again, and I think it's indeed not
enough. We don't just need to re-initialize it, but also set a
different lockclass for it.