FC6 kernels are oopsing when lockdep & memory debugging are turned on,
looks like due to this code:
xfs_ireclaim(xfs_inode_t *ip)
{
...
/*
* Here we do a spurious inode lock in order to coordinate with
* xfs_sync(). This is because xfs_sync() references the inodes
* in the mount list without taking references on the corresponding
* vnodes. We make that OK here by ensuring that we wait until
* the inode is unlocked in xfs_sync() before we go ahead and
* free it. We get both the regular lock and the io lock because
* the xfs_sync() code may need to drop the regular one but will
* still hold the io lock.
*/
xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
...
/*
* Free all memory associated with the inode.
*/
xfs_idestroy(ip);
}
So, lock & free. This frees memory that lockdep is still pointing to,
and tries to use later.
Calling xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); just before
xfs_idestroy seems to solve it, but is this safe...?
-Eric
|