• Darrick J. Wong's avatar
    fs: clear writeback errors in inode_init_always · 829bc787
    Darrick J. Wong authored
    In inode_init_always(), we clear the inode mapping flags, which clears
    any retained error (AS_EIO, AS_ENOSPC) bits.  Unfortunately, we do not
    also clear wb_err, which means that old mapping errors can leak through
    to new inodes.
    
    This is crucial for the XFS inode allocation path because we recycle old
    in-core inodes and we do not want error state from an old file to leak
    into the new file.  This bug was discovered by running generic/036 and
    generic/047 in a loop and noticing that the EIOs generated by the
    collision of direct and buffered writes in generic/036 would survive the
    remount between 036 and 047, and get reported to the fsyncs (on
    different files!) in generic/047.
    Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
    Reviewed-by: default avatarJeff Layton <jlayton@kernel.org>
    Reviewed-by: default avatarBrian Foster <bfoster@redhat.com>
    829bc787
inode.c 55.3 KB