xfs: provide a inode iolock lockdep class
authorDave Chinner <dchinner@redhat.com>
Thu, 23 Dec 2010 00:57:13 +0000 (11:57 +1100)
committerDave Chinner <david@fromorbit.com>
Thu, 23 Dec 2010 00:57:13 +0000 (11:57 +1100)
commitdcfcf20512cb517ac18b9433b676183fa1257911
treefd5551251e63f47dbb804e36cfd4cb3f15f5c322
parent489a150f6454e2cd93d9e0ee6d7c5a361844f62a
xfs: provide a inode iolock lockdep class

The XFS iolock needs to be re-initialised to a new lock class before
it enters reclaim to prevent lockdep false positives. Unfortunately,
this is not sufficient protection as inodes in the XFS_IRECLAIMABLE
state can be recycled and not re-initialised before being reused.

We need to re-initialise the lock state when transfering out of
XFS_IRECLAIMABLE state to XFS_INEW, but we need to keep the same
class as if the inode was just allocated. Hence we need a specific
lockdep class variable for the iolock so that both initialisations
use the same class.

While there, add a specific class for inodes in the reclaim state so
that it is easy to tell from lockdep reports what state the inode
was in that generated the report.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
fs/xfs/linux-2.6/xfs_super.c
fs/xfs/xfs_iget.c
fs/xfs/xfs_inode.h