• Alex Elder's avatar
    xfs: only take the ILOCK in xfs_reclaim_inode() · ad637a10
    Alex Elder authored
    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: default avatarAlex Elder <elder@dreamhost.com>
    Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarBen Myers <bpm@sgi.com>
    ad637a10
xfs_iget.c 19.3 KB