• C
    xfs: move aio completion after unwritten extent conversion · fb511f21
    Christoph Hellwig 提交于
    If we write into an unwritten extent using AIO we need to complete the AIO
    request after the extent conversion has finished.  Without that a read could
    race to see see the extent still unwritten and return zeros.   For synchronous
    I/O we already take care of that by flushing the xfsconvertd workqueue (which
    might be a bit of overkill).
    
    To do that add iocb and result fields to struct xfs_ioend, so that we can
    call aio_complete from xfs_end_io after the extent conversion has happened.
    Note that we need a new result field as io_error is used for positive errno
    values, while the AIO code can return negative error values and positive
    transfer sizes.
    Signed-off-by: NChristoph Hellwig <hch@lst.de>
    Reviewed-by: NDave Chinner <dchinner@redhat.com>
    Signed-off-by: NAlex Elder <aelder@sgi.com>
    fb511f21
xfs_aops.c 37.8 KB