kernel_optimize_test/fs/xfs
Christoph Hellwig 2813d682e8 xfs: remove the i_new_size field in struct xfs_inode
Now that we use the VFS i_size field throughout XFS there is no need for the
i_new_size field any more given that the VFS i_size field gets updated
in ->write_end before unlocking the page, and thus is always uptodate when
writeback could see a page.  Removing i_new_size also has the advantage that
we will never have to trim back di_size during a failed buffered write,
given that it never gets updated past i_size.

Note that currently the generic direct I/O code only updates i_size after
calling our end_io handler, which requires a small workaround to make
sure di_size actually makes it to disk.  I hope to fix this properly in
the generic code.

A downside is that we lose the support for parallel non-overlapping O_DIRECT
appending writes that recently was added.  I don't think keeping the complex
and fragile i_new_size infrastructure for this is a good tradeoff - if we
really care about parallel appending writers we should investigate turning
the iolock into a range lock, which would also allow for parallel
non-overlapping buffered writers.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <dchinner@redhat.com>
Signed-off-by: Ben Myers <bpm@sgi.com>
2012-01-17 15:10:19 -06:00
..
Kconfig
kmem.c
kmem.h
Makefile
mrlock.h
time.h
uuid.c
uuid.h
xfs_acl.c
xfs_acl.h
xfs_ag.h
xfs_alloc_btree.c
xfs_alloc_btree.h
xfs_alloc.c
xfs_alloc.h
xfs_aops.c xfs: remove the i_new_size field in struct xfs_inode 2012-01-17 15:10:19 -06:00
xfs_aops.h
xfs_attr_leaf.c xfs: remove the if_ext_max field in struct xfs_ifork 2012-01-17 15:02:28 -06:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_attr.c xfs: remove xfs_itruncate_data 2012-01-13 12:11:45 -06:00
xfs_attr.h
xfs_bit.c
xfs_bit.h
xfs_bmap_btree.c
xfs_bmap_btree.h
xfs_bmap.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_bmap.h
xfs_btree.c
xfs_btree.h
xfs_buf_item.c
xfs_buf_item.h
xfs_buf.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
xfs_buf.h
xfs_da_btree.c
xfs_da_btree.h
xfs_dfrag.c xfs: remove the if_ext_max field in struct xfs_ifork 2012-01-17 15:02:28 -06:00
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: fix endian conversion issue in discard code 2012-01-03 11:39:55 -06:00
xfs_discard.h
xfs_dquot_item.c
xfs_dquot_item.h
xfs_dquot.c
xfs_dquot.h
xfs_error.c
xfs_error.h
xfs_export.c
xfs_export.h
xfs_extfree_item.c
xfs_extfree_item.h
xfs_file.c xfs: remove the i_new_size field in struct xfs_inode 2012-01-17 15:10:19 -06:00
xfs_filestream.c
xfs_filestream.h
xfs_fs_subr.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_fs.h
xfs_fsops.c
xfs_fsops.h
xfs_globals.c
xfs_ialloc_btree.c
xfs_ialloc_btree.h
xfs_ialloc.c xfs: propagate umode_t 2012-01-03 22:55:00 -05:00
xfs_ialloc.h xfs: propagate umode_t 2012-01-03 22:55:00 -05:00
xfs_iget.c xfs: remove the i_new_size field in struct xfs_inode 2012-01-17 15:10:19 -06:00
xfs_inode_item.c xfs: replace i_pin_wait with a bit waitqueue 2012-01-17 15:07:54 -06:00
xfs_inode_item.h
xfs_inode.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_inode.h xfs: remove the i_new_size field in struct xfs_inode 2012-01-17 15:10:19 -06:00
xfs_inum.h
xfs_ioctl.c vfs: mnt_drop_write_file() 2012-01-03 22:52:40 -05:00
xfs_ioctl.h
xfs_ioctl32.c vfs: mnt_drop_write_file() 2012-01-03 22:52:40 -05:00
xfs_ioctl32.h
xfs_iomap.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_iomap.h
xfs_iops.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_iops.h
xfs_itable.c
xfs_itable.h
xfs_linux.h
xfs_log_cil.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-01-08 13:21:22 -08:00
xfs_log_priv.h
xfs_log_recover.c
xfs_log_recover.h
xfs_log.c
xfs_log.h
xfs_message.c
xfs_message.h
xfs_mount.c
xfs_mount.h
xfs_mru_cache.c
xfs_mru_cache.h
xfs_qm_bhv.c
xfs_qm_stats.c
xfs_qm_stats.h
xfs_qm_syscalls.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_qm.c
xfs_qm.h
xfs_quota_priv.h
xfs_quota.h
xfs_quotaops.c
xfs_rename.c
xfs_rtalloc.c
xfs_rtalloc.h
xfs_rw.c
xfs_rw.h
xfs_sb.h
xfs_stats.c
xfs_stats.h
xfs_super.c xfs: replace i_pin_wait with a bit waitqueue 2012-01-17 15:07:54 -06:00
xfs_super.h
xfs_sync.c xfs: replace i_flock with a sleeping bitlock 2012-01-17 15:06:45 -06:00
xfs_sync.h xfs: log all dirty inodes in xfs_fs_sync_fs 2011-12-23 16:41:47 -06:00
xfs_sysctl.c
xfs_sysctl.h
xfs_trace.c
xfs_trace.h xfs: remove the i_new_size field in struct xfs_inode 2012-01-17 15:10:19 -06:00
xfs_trans_ail.c
xfs_trans_buf.c
xfs_trans_dquot.c
xfs_trans_extfree.c
xfs_trans_inode.c
xfs_trans_priv.h
xfs_trans_space.h
xfs_trans.c
xfs_trans.h
xfs_types.h
xfs_utils.c xfs: propagate umode_t 2012-01-03 22:55:00 -05:00
xfs_utils.h xfs: propagate umode_t 2012-01-03 22:55:00 -05:00
xfs_vnode.h
xfs_vnodeops.c xfs: remove the i_size field in struct xfs_inode 2012-01-17 15:08:53 -06:00
xfs_vnodeops.h xfs: propagate umode_t 2012-01-03 22:55:00 -05:00
xfs_xattr.c
xfs.h