Dave Chinner
51749e47e1
xfs: log IO completion workqueue is a high priority queue
...
The workqueue implementation in 2.6.36-rcX has changed, resulting
in the workqueues no longer having dedicated threads for work
processing. This has caused severe livelocks under heavy parallel
create workloads because the log IO completions have been getting
held up behind metadata IO completions. Hence log commits would
stall, memory allocation would stall because pages could not be
cleaned, and lock contention on the AIL during inode IO completion
processing was being seen to slow everything down even further.
By making the log Io completion workqueue a high priority workqueue,
they are queued ahead of all data/metadata IO completions and
processed before the data/metadata completions. Hence the log never
gets stalled, and operations needed to clean memory can continue as
quickly as possible. This avoids the livelock conditions and allos
the system to keep running under heavy load as per normal.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Alex Elder <aelder@sgi.com>
2010-09-10 10:16:54 -05:00
..
linux-2.6
xfs: log IO completion workqueue is a high priority queue
2010-09-10 10:16:54 -05:00
quota
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs-2.6
2010-08-07 12:57:07 -07:00
support
xfs: drop dmapi hooks
2010-07-26 13:16:33 -05:00
Kconfig
Makefile
xfs: simplify log item descriptor tracking
2010-07-26 13:16:34 -05:00
xfs.h
xfs_acl.h
xfs: constify xattr_handler
2010-05-21 18:31:19 -04:00
xfs_ag.h
xfs: fix access to upper inodes without inode64
2010-05-28 15:19:56 -05:00
xfs_alloc.c
xfs: fix gcc 4.6 set but not read and unused statement warnings
2010-07-26 13:16:51 -05:00
xfs_alloc.h
xfs: do not use emums for flags used in tracing
2010-07-26 13:16:43 -05:00
xfs_alloc_btree.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_alloc_btree.h
xfs_arch.h
xfs_attr.c
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_attr.h
xfs_attr_leaf.c
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_bit.c
xfs_bit.h
xfs_bmap.c
xfs: Make fiemap work with sparse files
2010-09-03 09:02:11 -05:00
xfs_bmap.h
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_bmap_btree.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_bmap_btree.h
xfs_btree.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_btree.h
xfs_btree_trace.c
xfs_btree_trace.h
xfs_buf_item.c
xfs: kill the b_strat callback in xfs_buf
2010-07-26 13:16:52 -05:00
xfs_buf_item.h
xfs: give li_cb callbacks the correct prototype
2010-07-26 13:16:35 -05:00
xfs_da_btree.c
xfs: fix gcc 4.6 set but not read and unused statement warnings
2010-07-26 13:16:51 -05:00
xfs_da_btree.h
xfs_dfrag.c
xfs: simplify inode to transaction joining
2010-07-26 13:16:36 -05:00
xfs_dfrag.h
xfs_dinode.h
xfs_dir2.c
xfs: split xfs_itrace_entry
2010-07-26 13:16:44 -05:00
xfs_dir2.h
xfs_dir2_block.c
xfs: fix gcc 4.6 set but not read and unused statement warnings
2010-07-26 13:16:51 -05:00
xfs_dir2_block.h
xfs_dir2_data.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_data.h
xfs_dir2_leaf.c
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_dir2_leaf.h
xfs_dir2_node.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_node.h
xfs_dir2_sf.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_dir2_sf.h
xfs_error.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_error.h
xfs: add const qualifiers to xfs error function args
2010-05-19 09:58:11 -05:00
xfs_extfree_item.c
xfs: fix the xfs_log_iovec i_addr type
2010-07-26 13:16:36 -05:00
xfs_extfree_item.h
xfs_filestream.c
xfs: clean up filestreams helpers
2010-07-26 13:16:51 -05:00
xfs_filestream.h
xfs: clean up filestreams helpers
2010-07-26 13:16:51 -05:00
xfs_fs.h
xfs: Make fiemap work with sparse files
2010-09-03 09:02:11 -05:00
xfs_fsops.c
xfs: dummy transactions should not dirty VFS state
2010-08-24 11:46:31 +10:00
xfs_fsops.h
xfs: dummy transactions should not dirty VFS state
2010-08-24 11:46:31 +10:00
xfs_ialloc.c
xfs: fix untrusted inode number lookup
2010-08-24 11:42:30 +10:00
xfs_ialloc.h
xfs_ialloc_btree.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_ialloc_btree.h
xfs_iget.c
xfs: fix gcc 4.6 set but not read and unused statement warnings
2010-07-26 13:16:51 -05:00
xfs_inode.c
xfs: ensure we mark all inodes in a freed cluster XFS_ISTALE
2010-08-24 11:42:41 +10:00
xfs_inode.h
xfs: simplify and remove xfs_ireclaim
2010-07-26 13:16:48 -05:00
xfs_inode_item.c
xfs: fix big endian build
2010-07-26 16:07:38 -05:00
xfs_inode_item.h
xfs: simplify inode to transaction joining
2010-07-26 13:16:36 -05:00
xfs_inum.h
xfs_iomap.c
xfs: small cleanups for xfs_iomap / __xfs_get_blocks
2010-07-26 13:16:42 -05:00
xfs_iomap.h
xfs: do not use emums for flags used in tracing
2010-07-26 13:16:43 -05:00
xfs_itable.c
xfs: remove xfs_iput
2010-07-26 13:16:44 -05:00
xfs_itable.h
xfs: remove block number from inode lookup code
2010-06-24 11:35:17 +10:00
xfs_log.c
xfs: Reduce log force overhead for delayed logging
2010-08-24 11:40:03 +10:00
xfs_log.h
xfs: remove the unused XFS_LOG_SLEEP and XFS_LOG_NOSLEEP flags
2010-07-26 13:16:38 -05:00
xfs_log_cil.c
xfs: don't do memory allocation under the CIL context lock
2010-08-24 11:45:53 +10:00
xfs_log_priv.h
xfs: Reduce log force overhead for delayed logging
2010-08-24 11:40:03 +10:00
xfs_log_recover.c
xfs: fix the xfs_log_iovec i_addr type
2010-07-26 13:16:36 -05:00
xfs_log_recover.h
xfs: Clean up XFS_BLI_* flag namespace
2010-05-24 10:33:39 -05:00
xfs_mount.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_mount.h
xfs: remove obsolete osyncisosync mount option
2010-07-26 13:16:51 -05:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_quota.h
xfs: removed unused XFS_QMOPT_ flags
2010-05-19 09:58:15 -05:00
xfs_refcache.h
xfs_rename.c
xfs: split xfs_itrace_entry
2010-07-26 13:16:44 -05:00
xfs_rtalloc.c
xfs: remove unused delta tracking code in xfs_bmapi
2010-07-26 13:16:39 -05:00
xfs_rtalloc.h
xfs: be more explicit if RT mount fails due to config
2010-05-28 14:58:24 -05:00
xfs_rw.c
xfs: remove unneeded #include statements
2010-07-26 13:16:33 -05:00
xfs_rw.h
xfs_sb.h
xfs_trans.c
xfs: unlock items before allowing the CIL to commit
2010-08-24 11:42:52 +10:00
xfs_trans.h
xfs: remove the unused XFS_TRANS_NOSLEEP/XFS_TRANS_WAIT flags
2010-07-26 13:16:38 -05:00
xfs_trans_ail.c
xfs: drop dmapi hooks
2010-07-26 13:16:33 -05:00
xfs_trans_buf.c
xfs: give li_cb callbacks the correct prototype
2010-07-26 13:16:35 -05:00
xfs_trans_extfree.c
xfs: simplify log item descriptor tracking
2010-07-26 13:16:34 -05:00
xfs_trans_inode.c
xfs: simplify inode to transaction joining
2010-07-26 13:16:36 -05:00
xfs_trans_priv.h
xfs: unlock items before allowing the CIL to commit
2010-08-24 11:42:52 +10:00
xfs_trans_space.h
xfs_types.h
xfs: make the log ticket ID available outside the log infrastructure
2010-05-24 10:33:52 -05:00
xfs_utils.c
xfs: simplify xfs_truncate_file
2010-07-26 13:16:52 -05:00
xfs_utils.h
xfs: simplify xfs_truncate_file
2010-07-26 13:16:52 -05:00
xfs_vnodeops.c
xfs: prevent 32bit overflow in space reservation
2010-09-03 12:19:33 +10:00
xfs_vnodeops.h