]> git.karo-electronics.de Git - karo-tx-linux.git/commit
xfs: move aio completion after unwritten extent conversion
authorChristoph Hellwig <hch@infradead.org>
Sun, 18 Jul 2010 21:17:10 +0000 (21:17 +0000)
committerGreg Kroah-Hartman <gregkh@suse.de>
Mon, 20 Sep 2010 20:36:10 +0000 (13:36 -0700)
commit96d55caad409caedd5c0d8342cc76c5d8d6a80fd
tree7cf89028ede9dae8a4074345208fc1ae9f08d2ba
parentf2b23f0ffc7acdc8a49ba749e3843c43e97c301a
xfs: move aio completion after unwritten extent conversion

commit fb511f2150174b18b28ad54708c1adda0df39b17 upstream.

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>
Cc: Chuck Ebbert <cebbert@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/xfs/linux-2.6/xfs_aops.c