• Dave Chinner's avatar
    xfs: remove xfs_inobp_check() · e2705b03
    Dave Chinner authored
    This debug code is called on every xfs_iflush() call, which then
    checks every inode in the buffer for non-zero unlinked list field.
    Hence it checks every inode in the cluster buffer every time a
    single inode on that cluster it flushed. This is resulting in:
    
    -   38.91%     5.33%  [kernel]  [k] xfs_iflush
       - 17.70% xfs_iflush
          - 9.93% xfs_inobp_check
               4.36% xfs_buf_offset
    
    10% of the CPU time spent flushing inodes is repeatedly checking
    unlinked fields in the buffer. We don't need to do this.
    
    The other place we call xfs_inobp_check() is
    xfs_iunlink_update_dinode(), and this is after we've done this
    assert for the agino we are about to write into that inode:
    
    	ASSERT(xfs_verify_agino_or_null(mp, agno, next_agino));
    
    which means we've already checked that the agino we are about to
    write is not 0 on debug kernels. The inode buffer verifiers do
    everything else we need, so let's just remove this debug code.
    Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    e2705b03
xfs_inode_buf.c 18.9 KB