fb511f2150
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> |
||
---|---|---|
.. | ||
kmem.c | ||
kmem.h | ||
mrlock.h | ||
sv.h | ||
time.h | ||
xfs_acl.c | ||
xfs_aops.c | ||
xfs_aops.h | ||
xfs_buf.c | ||
xfs_buf.h | ||
xfs_cred.h | ||
xfs_export.c | ||
xfs_export.h | ||
xfs_file.c | ||
xfs_fs_subr.c | ||
xfs_globals.c | ||
xfs_globals.h | ||
xfs_ioctl32.c | ||
xfs_ioctl32.h | ||
xfs_ioctl.c | ||
xfs_ioctl.h | ||
xfs_iops.c | ||
xfs_iops.h | ||
xfs_linux.h | ||
xfs_quotaops.c | ||
xfs_stats.c | ||
xfs_stats.h | ||
xfs_super.c | ||
xfs_super.h | ||
xfs_sync.c | ||
xfs_sync.h | ||
xfs_sysctl.c | ||
xfs_sysctl.h | ||
xfs_trace.c | ||
xfs_trace.h | ||
xfs_version.h | ||
xfs_vnode.h | ||
xfs_xattr.c |