linux/fs/xfs/linux-2.6
Christoph Hellwig 209fb87a25 xfs simplify and speed up direct I/O completions
Our current handling of direct I/O completions is rather suboptimal,
because we defer it to a workqueue more often than needed, and we
perform a much to aggressive flush of the workqueue in case unwritten
extent conversions happen.

This patch changes the direct I/O reads to not even use a completion
handler, as we don't bother to use it at all, and to perform the unwritten
extent conversions in caller context for synchronous direct I/O.

For a small I/O size direct I/O workload on a consumer grade SSD, such as
the untar of a kernel tree inside qemu this patch gives speedups of
about 5%.  Getting us much closer to the speed of a native block device,
or a fully allocated XFS file.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
2010-07-26 16:09:19 -05:00
..
kmem.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
kmem.h
mrlock.h
sv.h
time.h
xfs_acl.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_aops.c xfs simplify and speed up direct I/O completions 2010-07-26 16:09:19 -05:00
xfs_aops.h direct-io: move aio_complete into ->end_io 2010-07-26 16:09:02 -05:00
xfs_buf.c xfs: kill the b_strat callback in xfs_buf 2010-07-26 13:16:52 -05:00
xfs_buf.h xfs: kill the b_strat callback in xfs_buf 2010-07-26 13:16:52 -05:00
xfs_cred.h
xfs_export.c xfs: remove xfs_iput_new 2010-07-26 13:16:44 -05:00
xfs_export.h
xfs_file.c xfs: remove a dmapi leftover 2010-07-26 13:16:47 -05:00
xfs_fs_subr.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_globals.c
xfs_globals.h
xfs_ioctl32.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_ioctl32.h
xfs_ioctl.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_ioctl.h
xfs_iops.c xfs: split xfs_itrace_entry 2010-07-26 13:16:44 -05:00
xfs_iops.h
xfs_linux.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_quotaops.c xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: remove obsolete osyncisosync mount option 2010-07-26 13:16:51 -05:00
xfs_super.h xfs: drop dmapi hooks 2010-07-26 13:16:33 -05:00
xfs_sync.c xfs: simplify and remove xfs_ireclaim 2010-07-26 13:16:48 -05:00
xfs_sync.h xfs: remove explicit xfs_sync_data/xfs_sync_attr calls on umount 2010-07-26 13:16:42 -05:00
xfs_sysctl.c
xfs_sysctl.h
xfs_trace.c xfs: remove unneeded #include statements 2010-07-26 13:16:33 -05:00
xfs_trace.h xfs: Fix build when CONFIG_XFS_POSIX_ACL=n 2010-07-26 13:16:50 -05:00
xfs_version.h
xfs_vnode.h
xfs_xattr.c xfs: constify xattr_handler 2010-05-21 18:31:19 -04:00