• B
    xfs: fix xfs_log_ticket leak in xfs_end_io() after fs shutdown · af055e37
    Brian Foster 提交于
    If the filesystem has shut down, xfs_end_io() currently sets an
    error on the ioend and proceeds to ioend destruction. The ioend
    might contain a truncate transaction if the I/O extended the size of
    the file. This transaction is only cleaned up in
    xfs_setfilesize_ioend(), however, which is skipped in this case.
    This results in an xfs_log_ticket leak message when the associate
    cache slab is destroyed (e.g., on rmmod).
    
    This was originally reproduced by xfs/141 on a distro kernel. The
    problem is reproducible on an upstream kernel, but not easily
    detected in current upstream if the xfs_log_ticket cache happens to
    be merged with another cache. This can be reproduced more
    deterministically with the 'slab_nomerge' kernel boot option.
    
    Update xfs_end_io() to proceed with normal end I/O processing after
    an error is set on an ioend due to fs shutdown. The I/O type-based
    processing is already designed to handle an I/O error and ensure
    that the ioend is cleaned up correctly.
    Signed-off-by: NBrian Foster <bfoster@redhat.com>
    Reviewed-by: NDave Chinner <dchinner@redhat.com>
    Signed-off-by: NDave Chinner <david@fromorbit.com>
    
    af055e37
xfs_aops.c 54.7 KB