linux-stable/fs/xfs
Dave Chinner d808f617ad xfs: Don't issue buffer IO direct from AIL push V2
All buffers logged into the AIL are marked as delayed write.
When the AIL needs to push the buffer out, it issues an async write of the
buffer. This means that IO patterns are dependent on the order of
buffers in the AIL.

Instead of flushing the buffer, promote the buffer in the delayed
write list so that the next time the xfsbufd is run the buffer will
be flushed by the xfsbufd. Return the state to the xfsaild that the
buffer was promoted so that the xfsaild knows that it needs to cause
the xfsbufd to run to flush the buffers that were promoted.

Using the xfsbufd for issuing the IO allows us to dispatch all
buffer IO from the one queue. This means that we can make much more
enlightened decisions on what order to flush buffers to disk as
we don't have multiple places issuing IO. Optimisations to xfsbufd
will be in a future patch.

Version 2
- kill XFS_ITEM_FLUSHING as it is now unused.

Signed-off-by: Dave Chinner <david@fromorbit.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2010-02-02 10:13:42 +11:00
..
linux-2.6 xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
quota xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
support xfs: event tracing support 2009-12-14 23:08:16 -06:00
Kconfig xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
Makefile xfs: turn off sign warnings 2010-01-26 15:10:15 +11:00
xfs.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_acl.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_ag.h xfs: embed the pagb_list array in the perag structure 2010-01-15 15:34:39 -06:00
xfs_alloc.c xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_alloc.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_alloc_btree.c xfs: Don't directly reference m_perag in allocation code 2010-01-15 15:33:12 -06:00
xfs_alloc_btree.h
xfs_arch.h xfs: use generic Posix ACL code 2009-06-10 17:07:47 +02:00
xfs_attr.c xfs: remove duplicate buffer flags 2010-01-21 13:44:36 -06:00
xfs_attr.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_attr_leaf.c xfs: remove duplicate buffer flags 2010-01-21 13:44:36 -06:00
xfs_attr_leaf.h
xfs_attr_sf.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00
xfs_bit.c
xfs_bit.h
xfs_bmap.c xfs: suppress spurious uninitialised var warning in xfs_bmapi() 2010-01-20 10:50:06 +11:00
xfs_bmap.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_bmap_btree.c xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_bmap_btree.h xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_btree.c xfs: remove duplicate buffer flags 2010-01-21 13:44:36 -06:00
xfs_btree.h xfs: add more statics & drop some unused functions 2009-08-31 14:46:20 -05:00
xfs_btree_trace.c
xfs_btree_trace.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_buf_item.c xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_buf_item.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_da_btree.c xfs: convert dirnameops to unsigned char names 2010-01-20 10:47:17 +11:00
xfs_da_btree.h xfs: convert dirnameops to unsigned char names 2010-01-20 10:47:17 +11:00
xfs_dfrag.c xfs: clean up inconsistent variable naming in xfs_swap_extent 2010-01-15 15:31:23 -06:00
xfs_dfrag.h xfs: clean up inconsistent variable naming in xfs_swap_extent 2010-01-15 15:31:23 -06:00
xfs_dinode.h
xfs_dir2.c xfs: clean up sign warnings in dir2 code 2010-01-20 10:48:05 +11:00
xfs_dir2.h xfs: make xfs_dir_cilookup_result use unsigned char 2010-01-20 10:47:25 +11:00
xfs_dir2_block.c xfs: clean up sign warnings in dir2 code 2010-01-20 10:48:05 +11:00
xfs_dir2_block.h
xfs_dir2_data.c
xfs_dir2_data.h
xfs_dir2_leaf.c xfs: clean up sign warnings in dir2 code 2010-01-20 10:48:05 +11:00
xfs_dir2_leaf.h
xfs_dir2_node.c xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_dir2_node.h xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_dir2_sf.c xfs: clean up sign warnings in dir2 code 2010-01-20 10:48:05 +11:00
xfs_dir2_sf.h
xfs_dmapi.h
xfs_dmops.c
xfs_error.c
xfs_error.h
xfs_extfree_item.c xfs: kill XLOG_VEC_SET_TYPE 2010-01-21 13:44:43 -06:00
xfs_extfree_item.h
xfs_filestream.c xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_filestream.h xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_fs.h trivial: fix typo "for for" in multiple files 2009-09-21 15:14:54 +02:00
xfs_fsops.c xfs: Replace per-ag array with a radix tree 2010-01-15 15:33:52 -06:00
xfs_fsops.h
xfs_ialloc.c xfs: remove duplicate buffer flags 2010-01-21 13:44:36 -06:00
xfs_ialloc.h xfs: rationalize xfs_inobt_lookup* 2009-09-01 12:45:39 -05:00
xfs_ialloc_btree.c
xfs_ialloc_btree.h
xfs_iget.c xfs: rename xfs_get_perag 2010-01-15 15:33:02 -06:00
xfs_inode.c xfs: Use delayed write for inodes rather than async V2 2010-02-06 12:39:36 +11:00
xfs_inode.h xfs: Use delayed write for inodes rather than async V2 2010-02-06 12:39:36 +11:00
xfs_inode_item.c xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_inode_item.h xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_inum.h xfs: remove XFS_INO64_OFFSET 2009-08-31 14:46:22 -05:00
xfs_iomap.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_iomap.h xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_itable.c xfs: replace KM_LARGE with explicit vmalloc use 2010-01-21 13:44:56 -06:00
xfs_itable.h xfs: add more statics & drop some unused functions 2009-08-31 14:46:20 -05:00
xfs_log.c xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_log.h xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_log_priv.h xfs: make several more functions static 2010-01-15 15:31:38 -06:00
xfs_log_recover.c xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_log_recover.h xfs: Use list_heads for log recovery item lists 2010-01-15 15:31:51 -06:00
xfs_mount.c xfs: Use delayed write for inodes rather than async V2 2010-02-06 12:39:36 +11:00
xfs_mount.h xfs: more reserved blocks fixups 2010-02-08 17:41:48 -06:00
xfs_mru_cache.c xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_mru_cache.h xfs: Kill filestreams cache flush 2010-01-15 15:34:22 -06:00
xfs_quota.h xfs: kill XFS_QMOPT_ASYNC 2010-01-21 13:44:10 -06:00
xfs_refcache.h
xfs_rename.c xfs: event tracing support 2009-12-14 23:08:16 -06:00
xfs_rtalloc.c xfs: fix missing error check in xfs_rtfree_range 2010-01-15 13:46:19 -06:00
xfs_rtalloc.h
xfs_rw.c xfs: move more buffer helpers into xfs_buf.c 2010-01-15 15:35:17 -06:00
xfs_rw.h xfs: move more buffer helpers into xfs_buf.c 2010-01-15 15:35:17 -06:00
xfs_sb.h
xfs_trans.c xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_trans.h xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_trans_ail.c xfs: Don't issue buffer IO direct from AIL push V2 2010-02-02 10:13:42 +11:00
xfs_trans_buf.c xfs: remove duplicate buffer flags 2010-01-21 13:44:36 -06:00
xfs_trans_extfree.c
xfs_trans_inode.c xfs: simplify xfs_trans_iget 2009-09-01 12:46:16 -05:00
xfs_trans_item.c
xfs_trans_priv.h
xfs_trans_space.h
xfs_types.h xfs: directory names are unsigned 2010-01-20 10:44:58 +11:00
xfs_utils.c xfs: kill xfs_qmops 2009-06-08 15:33:32 +02:00
xfs_utils.h
xfs_vnodeops.c xfs: cleanup up xfs_log_force calling conventions 2010-01-21 13:44:49 -06:00
xfs_vnodeops.h xfs: convert attr to use unsigned names 2010-01-20 10:47:48 +11:00