• Brian Foster's avatar
    xfs: fail if xattr inactivation hits a hole · a53efbd5
    Brian Foster authored
    The child buffer read in xfs_attr3_node_inactive() should never
    reach a hole in the attr fork. If this occurs, it is likely due to a
    bug. Prior to commit cd87d867 ("xfs: don't crash on unexpected holes
    in dir/attr btrees"), this would result in a crash. Now that the
    crash has been fixed, this is a silent failure.
    
    Pass -1 to xfs_da3_node_read() from xfs_da3_node_inactive() to
    indicate that reading from a hole is an error. This logs an error to
    syslog and fails the inode inactivation, leaving the inode on the AG
    unlinked list until removed by xfs_repair (or log recovery). Also
    update the subsequent code to reflect that the read now returns a
    non-NULL buffer or an error.
    Signed-off-by: default avatarBrian Foster <bfoster@redhat.com>
    Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    a53efbd5
xfs_attr_inactive.c 11.3 KB