xfs: move aio completion after unwritten extent conversion
authorChristoph Hellwig <hch@infradead.org>
Sun, 18 Jul 2010 21:17:10 +0000 (21:17 +0000)
committerAlex Elder <aelder@sgi.com>
Mon, 26 Jul 2010 21:09:10 +0000 (16:09 -0500)
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: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>

No differences found