linux_dsm_epyc7002/fs/xfs
Darrick J. Wong f0f7a674d4 xfs: move inode flush to the sync workqueue
Move the inode dirty data flushing to a workqueue so that multiple
threads can take advantage of a single thread's flushing work.  The
ratelimiting technique used in bdd4ee4 was not successful, because
threads that skipped the inode flush scan due to ratelimiting would
ENOSPC early, which caused occasional (but noticeable) changes in
behavior and sporadic fstest regressions.

Therefore, make all the writer threads wait on a single inode flush,
which eliminates both the stampeding hordes of flushers and the small
window in which a write could fail with ENOSPC because it lost the
ratelimit race after even another thread freed space.

Fixes: c6425702f2 ("xfs: ratelimit inode flush on buffered write ENOSPC")
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
2020-04-16 09:07:42 -07:00
..
libxfs xfs: validate the realtime geometry in xfs_validate_sb_common 2020-03-27 08:32:53 -07:00
scrub xfs: prohibit fs freezing when using empty transactions 2020-03-26 08:19:24 -07:00
Kconfig
kmem.c
kmem.h
Makefile xfs: introduce fake roots for ag-rooted btrees 2020-03-18 08:12:23 -07:00
mrlock.h
xfs_acl.c xfs: only allocate the buffer size actually needed in __xfs_set_acl 2020-03-02 20:55:55 -08:00
xfs_acl.h xfs: improve xfs_forget_acl 2020-03-02 20:55:55 -08:00
xfs_aops.c xfs: ratelimit xfs_discard_page messages 2020-03-02 20:55:51 -08:00
xfs_aops.h
xfs_attr_inactive.c xfs: add a function to deal with corrupt buffers post-verifiers 2020-03-12 07:58:12 -07:00
xfs_attr_list.c xfs: add a function to deal with corrupt buffers post-verifiers 2020-03-12 07:58:12 -07:00
xfs_bio_io.c
xfs_bmap_item.c
xfs_bmap_item.h
xfs_bmap_util.c xfs: remove the di_version field from struct icdinode 2020-03-19 08:48:47 -07:00
xfs_bmap_util.h
xfs_buf_item.c xfs: add a new xfs_sb_version_has_v3inode helper 2020-03-19 08:47:34 -07:00
xfs_buf_item.h
xfs_buf.c xfs: Improve metadata buffer reclaim accountability 2020-03-27 08:32:54 -07:00
xfs_buf.h xfs: add a function to deal with corrupt buffers post-verifiers 2020-03-12 07:58:12 -07:00
xfs_dir2_readdir.c xfs: fix regression in "cleanup xfs_dir2_block_getdents" 2020-03-13 10:37:13 -07:00
xfs_discard.c xfs: remove XFS_BUF_TO_AGF 2020-03-11 09:11:39 -07:00
xfs_discard.h
xfs_dquot_item.c xfs: trylock underlying buffer on dquot flush 2020-03-28 09:40:11 -07:00
xfs_dquot_item.h xfs: factor out quotaoff intent AIL removal and memory free 2020-03-18 08:12:23 -07:00
xfs_dquot.c xfs: trylock underlying buffer on dquot flush 2020-03-28 09:40:11 -07:00
xfs_dquot.h
xfs_error.c xfs: xfs_buf_corruption_error should take __this_address 2020-03-12 07:58:12 -07:00
xfs_error.h xfs: xfs_buf_corruption_error should take __this_address 2020-03-12 07:58:12 -07:00
xfs_export.c xfs: factor out a new xfs_log_force_inode helper 2020-04-06 08:44:35 -07:00
xfs_export.h
xfs_extent_busy.c
xfs_extent_busy.h
xfs_extfree_item.c
xfs_extfree_item.h
xfs_file.c xfs: reflink should force the log out if mounted with wsync 2020-04-06 08:44:39 -07:00
xfs_filestream.c
xfs_filestream.h
xfs_fsmap.c xfs: prohibit fs freezing when using empty transactions 2020-03-26 08:19:24 -07:00
xfs_fsmap.h
xfs_fsops.c
xfs_fsops.h
xfs_globals.c
xfs_health.c
xfs_icache.c xfs: acquire superblock freeze protection on eofblocks scans 2020-04-13 08:00:19 -07:00
xfs_icache.h
xfs_icreate_item.c
xfs_icreate_item.h
xfs_inode_item.c xfs: return locked status of inode buffer on xfsaild push 2020-03-28 09:40:12 -07:00
xfs_inode_item.h
xfs_inode.c xfs: factor out a new xfs_log_force_inode helper 2020-04-06 08:44:35 -07:00
xfs_inode.h xfs: factor out a new xfs_log_force_inode helper 2020-04-06 08:44:35 -07:00
xfs_ioctl32.c xfs: lift cursor copy in/out into xfs_ioc_attr_list 2020-03-02 20:55:54 -08:00
xfs_ioctl32.h
xfs_ioctl.c xfs: acquire superblock freeze protection on eofblocks scans 2020-04-13 08:00:19 -07:00
xfs_ioctl.h xfs: embedded the attrlist cursor into struct xfs_attr_list_context 2020-03-02 20:55:55 -08:00
xfs_iomap.c
xfs_iomap.h
xfs_iops.c xfs: remove the di_version field from struct icdinode 2020-03-19 08:48:47 -07:00
xfs_iops.h
xfs_itable.c xfs: remove the di_version field from struct icdinode 2020-03-19 08:48:47 -07:00
xfs_itable.h
xfs_iwalk.c
xfs_iwalk.h
xfs_linux.h xfs: clean up the attr flag confusion 2020-03-02 20:55:55 -08:00
xfs_log_cil.c xfs: Throttle commits on delayed background CIL push 2020-03-27 08:32:54 -07:00
xfs_log_priv.h xfs: Throttle commits on delayed background CIL push 2020-03-27 08:32:54 -07:00
xfs_log_recover.c xfs: remove the di_version field from struct icdinode 2020-03-19 08:48:47 -07:00
xfs_log.c xfs: don't write a corrupt unmount record to force summary counter recalc 2020-03-27 08:32:55 -07:00
xfs_log.h xfs: refactor and split xfs_log_done() 2020-03-27 08:32:53 -07:00
xfs_message.c
xfs_message.h
xfs_mount.c xfs: remove XFS_BUF_TO_SBP 2020-03-11 09:11:39 -07:00
xfs_mount.h xfs: move inode flush to the sync workqueue 2020-04-16 09:07:42 -07:00
xfs_mru_cache.c
xfs_mru_cache.h
xfs_ondisk.h
xfs_pnfs.c
xfs_pnfs.h
xfs_pwork.c
xfs_pwork.h
xfs_qm_bhv.c
xfs_qm_syscalls.c xfs: fix unmount hang and memory leak on shutdown during quotaoff 2020-03-18 08:12:23 -07:00
xfs_qm.c xfs: trylock underlying buffer on dquot flush 2020-03-28 09:40:11 -07:00
xfs_qm.h
xfs_quota.h xfs: remove the icdinode di_uid/di_gid members 2020-03-02 20:55:50 -08:00
xfs_quotaops.c
xfs_refcount_item.c
xfs_refcount_item.h
xfs_reflink.c xfs: fix partially uninitialized structure in xfs_reflink_remap_extent 2020-04-13 08:00:23 -07:00
xfs_reflink.h
xfs_rmap_item.c
xfs_rmap_item.h
xfs_rtalloc.c
xfs_rtalloc.h
xfs_stats.c xfs: Use scnprintf() for avoiding potential buffer overflow 2020-03-12 07:58:13 -07:00
xfs_stats.h
xfs_super.c xfs: move inode flush to the sync workqueue 2020-04-16 09:07:42 -07:00
xfs_super.h
xfs_symlink.c xfs: remove redundant variable assignment in xfs_symlink() 2020-03-31 08:42:22 -07:00
xfs_symlink.h
xfs_sysctl.c
xfs_sysctl.h
xfs_sysfs.c
xfs_sysfs.h
xfs_trace.c xfs: support bulk loading of staged btrees 2020-03-18 08:12:23 -07:00
xfs_trace.h xfs: Throttle commits on delayed background CIL push 2020-03-27 08:32:54 -07:00
xfs_trans_ail.c xfs: tail updates only need to occur when LSN changes 2020-03-27 08:32:55 -07:00
xfs_trans_buf.c
xfs_trans_dquot.c
xfs_trans_priv.h xfs: tail updates only need to occur when LSN changes 2020-03-27 08:32:55 -07:00
xfs_trans.c xfs: split xlog_ticket_done 2020-03-27 08:32:53 -07:00
xfs_trans.h
xfs_xattr.c xfs: embedded the attrlist cursor into struct xfs_attr_list_context 2020-03-02 20:55:55 -08:00
xfs.h