[PATCH] xfs: only take the ILOCK in xfs_reclaim_inode()

Dave Chinner david at fromorbit.com
Thu Feb 16 20:45:21 CST 2012


On Thu, Feb 16, 2012 at 04:01:00PM -0600, Alex Elder wrote:
> At the end of xfs_reclaim_inode(), the inode is locked in order to
> we wait for a possible concurrent lookup to complete before the
> inode is freed.  This synchronization step was taking both the ILOCK
> and the IOLOCK, but the latter was causing lockdep to produce
> reports of the possibility of deadlock.
> 
> It turns out that there's no need to acquire the IOLOCK at this
> point anyway.  It may have been required in some earlier version of
> the code, but there should be no need to take the IOLOCK in
> xfs_iget(), so there's no (longer) any need to get it here for
> synchronization.  Add an assertion in xfs_iget() as a reminder
> of this assumption.
> 
> Dave Chinner diagnosed this on IRC, and Christoph Hellwig suggested
> no longer including the IOLOCK.  I just put together the patch.
> 
> Signed-off-by: Alex Elder <elder at dreamhost.com>

The code and comments is almost identical to the patch I've been
testing over the past day, so consider it

Reviewed-by: Dave Chinner <dchinner at redhat.com>
-- 
Dave Chinner
david at fromorbit.com



More information about the xfs mailing list