linux/fs/xfs
Christoph Hellwig 0030807c66 xfs: revert to using a kthread for AIL pushing
Currently we have a few issues with the way the workqueue code is used to
implement AIL pushing:

 - it accidentally uses the same workqueue as the syncer action, and thus
   can be prevented from running if there are enough sync actions active
   in the system.
 - it doesn't use the HIGHPRI flag to queue at the head of the queue of
   work items

At this point I'm not confident enough in getting all the workqueue flags and
tweaks right to provide a perfectly reliable execution context for AIL
pushing, which is the most important piece in XFS to make forward progress
when the log fills.

Revert back to use a kthread per filesystem which fixes all the above issues
at the cost of having a task struct and stack around for each mounted
filesystem.  In addition this also gives us much better ways to diagnose
any issues involving hung AIL pushing and removes a small amount of code.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reported-by: Stefan Priebe <s.priebe@profihost.ag>
Tested-by: Stefan Priebe <s.priebe@profihost.ag>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Alex Elder <aelder@sgi.com>
2011-10-11 11:02:49 -05:00
..
Kconfig
kmem.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
kmem.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
Makefile xfs: fix tracing builds inside the source tree 2011-08-22 16:37:24 -05:00
mrlock.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
time.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
uuid.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
uuid.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_acl.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_acl.h xfs: Fix build breakage in xfs_iops.c when CONFIG_FS_POSIX_ACL is not set 2011-08-01 02:35:04 -04:00
xfs_ag.h
xfs_alloc_btree.c
xfs_alloc_btree.h
xfs_alloc.c
xfs_alloc.h
xfs_aops.c xfs: fix a use after free in xfs_end_io_direct_write 2011-09-14 08:56:35 -05:00
xfs_aops.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_attr_leaf.c
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_attr.c
xfs_attr.h
xfs_bit.c
xfs_bit.h
xfs_bmap_btree.c
xfs_bmap_btree.h
xfs_bmap.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-08-08 07:06:24 -05:00
xfs_bmap.h
xfs_btree.c
xfs_btree.h
xfs_buf_item.c xfs: force the log if we encounter pinned buffers in .iop_pushbuf 2011-10-11 11:02:48 -05:00
xfs_buf_item.h
xfs_buf.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_buf.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_da_btree.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-08-08 07:06:24 -05:00
xfs_da_btree.h
xfs_dfrag.c
xfs_dfrag.h
xfs_dinode.h
xfs_dir2_block.c
xfs_dir2_data.c
xfs_dir2_format.h
xfs_dir2_leaf.c
xfs_dir2_node.c
xfs_dir2_priv.h
xfs_dir2_sf.c
xfs_dir2.c
xfs_dir2.h
xfs_discard.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_discard.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_dquot_item.c xfs: force the log if we encounter pinned buffers in .iop_pushbuf 2011-10-11 11:02:48 -05:00
xfs_dquot_item.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_dquot.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_dquot.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_error.c
xfs_error.h
xfs_export.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_export.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_extfree_item.c
xfs_extfree_item.h
xfs_file.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_filestream.c
xfs_filestream.h
xfs_fs_subr.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_fs.h
xfs_fsops.c
xfs_fsops.h
xfs_globals.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_ialloc_btree.c
xfs_ialloc_btree.h
xfs_ialloc.c
xfs_ialloc.h
xfs_iget.c
xfs_inode_item.c xfs: force the log if we encounter pinned buffers in .iop_pushbuf 2011-10-11 11:02:48 -05:00
xfs_inode_item.h
xfs_inode.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-08-08 07:06:24 -05:00
xfs_inode.h
xfs_inum.h
xfs_ioctl32.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_ioctl32.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_ioctl.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_ioctl.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_iomap.c
xfs_iomap.h
xfs_iops.c xfs: fix xfs_mark_inode_dirty during umount 2011-08-31 17:59:39 -05:00
xfs_iops.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_itable.c
xfs_itable.h
xfs_linux.h xfs: revert to using a kthread for AIL pushing 2011-10-11 11:02:49 -05:00
xfs_log_cil.c
xfs_log_priv.h
xfs_log_recover.c xfs: replace xfs_buf_geterror() with bp->b_error 2011-08-12 13:39:40 -05:00
xfs_log_recover.h
xfs_log.c
xfs_log.h
xfs_message.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_message.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_mount.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux 2011-08-08 07:06:24 -05:00
xfs_mount.h
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qm_bhv.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_qm_stats.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_qm_stats.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_qm_syscalls.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_qm.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_qm.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_quota_priv.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_quota.h
xfs_quotaops.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_rename.c
xfs_rtalloc.c
xfs_rtalloc.h
xfs_rw.c
xfs_rw.h
xfs_sb.h
xfs_stats.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_stats.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_super.c xfs: revert to using a kthread for AIL pushing 2011-10-11 11:02:49 -05:00
xfs_super.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_sync.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_sync.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_sysctl.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_sysctl.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_trace.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_trace.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_trans_ail.c xfs: revert to using a kthread for AIL pushing 2011-10-11 11:02:49 -05:00
xfs_trans_buf.c
xfs_trans_dquot.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_priv.h xfs: revert to using a kthread for AIL pushing 2011-10-11 11:02:49 -05:00
xfs_trans_space.h
xfs_trans.c
xfs_trans.h xfs: force the log if we encounter pinned buffers in .iop_pushbuf 2011-10-11 11:02:48 -05:00
xfs_types.h
xfs_utils.c
xfs_utils.h
xfs_vnode.h xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs_vnodeops.c xfs: replace xfs_buf_geterror() with bp->b_error 2011-08-12 13:39:40 -05:00
xfs_vnodeops.h
xfs_xattr.c xfs: remove subdirectories 2011-08-12 16:21:35 -05:00
xfs.h xfs: don't expect xfs headers to be in subdirectories 2011-08-12 13:57:55 -05:00