linux/fs/xfs
David Chinner 5d51eff453 [XFS] Fix inode allocation latency
The log force added in xfs_iget_core() has been a performance issue since
it was introduced for tight loops that allocate then unlink a single file.
under heavy writeback, this can introduce unnecessary latency due tothe
log I/o getting stuck behind bulk data writes.

Fix this latency problem by avoinding the need for the log force by moving
the place we mark linux inode dirty to the transaction commit rather than
on transaction completion.

This also closes a potential hole in the sync code where a linux inode is
not dirty between the time it is modified and the time the log buffer has
been written to disk.

SGI-PV: 972753
SGI-Modid: xfs-linux-melb:xfs-kern:30007a

Signed-off-by: David Chinner <dgc@sgi.com>
Signed-off-by: Christoph Hellwig <hch@infradead.org>
Signed-off-by: Lachlan McIlroy <lachlan@sgi.com>
2008-02-07 18:16:07 +11:00
..
linux-2.6 [XFS] Fix inode allocation latency 2008-02-07 18:16:07 +11:00
quota [XFS] Remove spin.h 2008-02-07 16:47:45 +11:00
support [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
Kbuild
Kconfig
Makefile
Makefile-linux-2.6 [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_acl.c
xfs_acl.h
xfs_ag.h [XFS] Unwrap pagb_lock. 2008-02-07 16:46:39 +11:00
xfs_alloc_btree.c
xfs_alloc_btree.h
xfs_alloc.c [XFS] Remove spin.h 2008-02-07 16:47:45 +11:00
xfs_alloc.h
xfs_arch.h
xfs_attr_leaf.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_attr.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_attr.h
xfs_bit.c [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_bit.h [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_bmap_btree.c
xfs_bmap_btree.h
xfs_bmap.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_bmap.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_btree.c
xfs_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_buf_item.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_buf_item.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_clnt.h
xfs_da_btree.c [XFS] Unwrap xfs_dabuf_global_lock 2008-02-07 16:46:48 +11:00
xfs_da_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_dfrag.c [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_dfrag.h
xfs_dinode.h
xfs_dir2_block.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_block.h
xfs_dir2_data.c
xfs_dir2_data.h
xfs_dir2_leaf.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_leaf.h
xfs_dir2_node.c
xfs_dir2_node.h
xfs_dir2_sf.c [XFS] Put the correct offset in dirent d_off 2007-12-18 17:16:23 +11:00
xfs_dir2_sf.h
xfs_dir2_trace.c
xfs_dir2_trace.h
xfs_dir2.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_dir2.h
xfs_dmapi.h
xfs_dmops.c [XFS] fixups after behavior removal merge into mainline git 2007-10-19 17:14:45 +10:00
xfs_error.c [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
xfs_error.h [XFS] lose xfs_hex_dump in favor of print_hex_dump 2008-02-07 18:13:05 +11:00
xfs_extfree_item.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_extfree_item.h
xfs_filestream.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_filestream.h
xfs_fs.h [XFS] fix 32-bit compat ioctls for GETXFLAGS, SETXFLAGS, GETVERSION 2008-02-07 18:13:17 +11:00
xfs_fsops.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_fsops.h
xfs_ialloc_btree.c
xfs_ialloc_btree.h [XFS] kill XFS_INOBT_IS_FREE_DISK 2008-02-07 18:12:41 +11:00
xfs_ialloc.c
xfs_ialloc.h
xfs_iget.c [XFS] Fix inode allocation latency 2008-02-07 18:16:07 +11:00
xfs_imap.h
xfs_inode_item.c [XFS] Fix inode allocation latency 2008-02-07 18:16:07 +11:00
xfs_inode_item.h
xfs_inode.c [XFS] Fix inode allocation latency 2008-02-07 18:16:07 +11:00
xfs_inode.h [XFS] Fix inode allocation latency 2008-02-07 18:16:07 +11:00
xfs_inum.h
xfs_iomap.c [XFS] Fix transaction overrun during writeback. 2008-02-07 18:15:55 +11:00
xfs_iomap.h [XFS] kill unnessecary ioops indirection 2008-02-07 16:44:14 +11:00
xfs_itable.c [XFS] Make xfs_bulkstat() to report unlinked but referenced inodes 2008-02-07 18:13:37 +11:00
xfs_itable.h
xfs_log_priv.h [XFS] xlog_rec_header/xlog_rec_ext_header endianess annotations 2008-02-07 18:11:47 +11:00
xfs_log_recover.c [XFS] Fix sparse warning in xlog_recover_do_efd_trans. 2008-02-07 18:15:29 +11:00
xfs_log_recover.h
xfs_log.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_log.h [XFS] xlog_rec_header/xlog_rec_ext_header endianess annotations 2008-02-07 18:11:47 +11:00
xfs_mount.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_mount.h [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_mru_cache.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_mru_cache.h
xfs_qmops.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_quota.h
xfs_refcache.h
xfs_rename.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_rtalloc.c [XFS] Use the generic bitops rather than implementing them ourselves. 2008-02-07 18:14:22 +11:00
xfs_rtalloc.h
xfs_rw.c
xfs_rw.h [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_sb.h
xfs_trans_ail.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans_buf.c
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_item.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_trans_priv.h [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans_space.h
xfs_trans.c [XFS] Unwrap AIL_LOCK 2008-02-07 16:44:23 +11:00
xfs_trans.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_types.h
xfs_utils.c [XFS] Unwrap XFS_SB_LOCK. 2008-02-07 16:47:15 +11:00
xfs_utils.h [XFS] clean up vnode/inode tracing 2008-02-07 16:42:19 +11:00
xfs_vfsops.c [XFS] Show all mount args in /proc/mounts 2008-02-07 18:15:43 +11:00
xfs_vfsops.h [XFS] kill xfs_freeze. 2008-02-07 18:09:56 +11:00
xfs_vnodeops.c [XFS] kill xfs_iocore_t 2008-02-07 16:48:58 +11:00
xfs_vnodeops.h [XFS] cleanup fid types mess 2007-10-19 18:02:55 +10:00
xfs.h [XFS] clean up vnode/inode tracing 2008-02-07 16:42:19 +11:00