Comment 1 for bug 1706132

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote :

# the following commit solves the issue:

commit af055e37a91d215d7174d0b84c86795ca81086a7
Author: Brian Foster <email address hidden>
Date: Mon Feb 8 15:00:02 2016 +1100

    xfs: fix xfs_log_ticket leak in xfs_end_io() after fs shutdown

    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: Brian Foster <email address hidden>
    Reviewed-by: Dave Chinner <email address hidden>
    Signed-off-by: Dave Chinner <email address hidden>