• D
    xfs: Make inode reclaim states explicit · 777df5af
    Dave Chinner 提交于
    A.K.A.: don't rely on xfs_iflush() return value in reclaim
    
    We have gradually been moving checks out of the reclaim code because
    they are duplicated in xfs_iflush(). We've had a history of problems
    in this area, and many of them stem from the overloading of the
    return values from xfs_iflush() and interaction with inode flush
    locking to determine if the inode is safe to reclaim.
    
    With the desire to move to delayed write flushing of inodes and
    non-blocking inode tree reclaim walks, the overloading of the
    return value of xfs_iflush makes it very difficult to determine
    the correct thing to do next.
    
    This patch explicitly re-adds the checks to the inode reclaim code,
    removing the reliance on the return value of xfs_iflush() to
    determine what to do next. It also means that we can clearly
    document all the inode states that reclaim must handle and hence
    we can easily see that we handled all the necessary cases.
    
    This also removes the need for the xfs_inode_clean() check in
    xfs_iflush() as all callers now check this first (safely).
    Signed-off-by: NDave Chinner <david@fromorbit.com>
    Reviewed-by: NChristoph Hellwig <hch@lst.de>
    777df5af
xfs_inode.h 18.9 KB