1
linux/fs/xfs
David Chinner 978b723712 [XFS] Fix fsync() b0rkage.
xfs_fsync() fails to wait for data I/O completion before checking if the
inode is dirty or clean to decide whether to log the inode or not. This
misses inode size updates when the data flushed by the fsync() is
extending the file.

Hence, like fdatasync(), we need to wait for I/o completion first, then
check the inode for cleanliness. Doing so makes the behaviour of
xfs_fsync() identical for fsync and fdatasync and we *always* use
synchronous semantics if the inode is dirty. Therefore also kill the
differences and remove the unused flags from the xfs_fsync function and
callers.

SGI-PV: 981296
SGI-Modid: xfs-linux-melb:xfs-kern:31033a

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-05-23 15:25:25 +10:00
..
linux-2.6 [XFS] Fix fsync() b0rkage. 2008-05-23 15:25:25 +10:00
quota [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
support [XFS] Include linux/random.h in all builds, not just debug builds. 2008-04-30 18:17:44 +10:00
Kconfig [XFS] allow enabling CONFIG_XFS_DEBUG 2008-04-29 16:07:48 +10:00
Makefile [XFS] Added quota targets and removed dmapi directory 2008-02-18 13:06:17 +11:00
xfs_acl.c [XFS] Cleanup xfs_attr a bit with xfs_name and remove cred 2008-04-29 15:54:55 +10:00
xfs_acl.h [XFS] use generic_permission 2008-02-07 18:22:38 +11:00
xfs_ag.h [XFS] Unwrap pagb_lock. 2008-02-07 16:46:39 +11:00
xfs_alloc_btree.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_alloc_btree.h
xfs_alloc.c [XFS] fix logic error in xfs_alloc_ag_vextent_near() 2008-04-18 12:03:02 +10:00
xfs_alloc.h
xfs_arch.h xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_attr_leaf.c [XFS] Always use di_forkoff when checking for attr space. 2008-04-18 12:03:40 +10:00
xfs_attr_leaf.h
xfs_attr_sf.h
xfs_attr.c [XFS] Cleanup xfs_attr a bit with xfs_name and remove cred 2008-04-29 15:54:55 +10:00
xfs_attr.h [XFS] Cleanup xfs_attr a bit with xfs_name and remove cred 2008-04-29 15:54:55 +10:00
xfs_bit.c [XFS] Undo bit ops cleanup mod due to regression on 32-bit powermac 2008-02-26 17:05:44 +11:00
xfs_bit.h [XFS] Undo bit ops cleanup mod due to regression on 32-bit powermac 2008-02-26 17:05:44 +11:00
xfs_bmap_btree.c [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_bmap_btree.h [XFS] remove shouting-indirection macros from xfs_sb.h 2008-04-10 16:24:45 +10:00
xfs_bmap.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_bmap.h [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10: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] Ensure xfs_bawrite() errors are checked. 2008-04-18 12:00:35 +10:00
xfs_buf_item.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_clnt.h [XFS] If you mount an XFS filesystem with no mount options at all, then 2008-02-28 20:37:56 -08:00
xfs_da_btree.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_da_btree.h [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_dfrag.c [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_dfrag.h
xfs_dinode.h [XFS] Remove CFORK macros and use code directly in IFORK and DFORK macros. 2008-02-07 18:19:24 +11:00
xfs_dir2_block.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_dir2_block.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_data.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_dir2_data.h
xfs_dir2_leaf.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_dir2_leaf.h [XFS] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_node.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
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] use filldir internally 2007-10-15 16:49:49 +10:00
xfs_dir2_trace.c
xfs_dir2_trace.h
xfs_dir2.c [XFS] remove bhv_vname_t and xfs_rename code 2008-04-18 12:00:12 +10:00
xfs_dir2.h [XFS] remove bhv_vname_t and xfs_rename code 2008-04-18 12:00:12 +10:00
xfs_dmapi.h [XFS] kill the vfs_flags member in struct bhv_vfs 2007-10-16 11:45:57 +10:00
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] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10: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] Don't double count reserved block changes on UP. 2008-04-29 15:58:27 +10:00
xfs_fsops.h
xfs_ialloc_btree.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_ialloc_btree.h [XFS] kill XFS_INOBT_IS_FREE_DISK 2008-02-07 18:12:41 +11:00
xfs_ialloc.c [XFS] Don't initialise new inode generation numbers to zero 2008-04-29 15:58:56 +10:00
xfs_ialloc.h
xfs_iget.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_imap.h
xfs_inode_item.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_inode_item.h [XFS] Use xfs_inode_clean() in more places 2008-04-18 11:37:51 +10:00
xfs_inode.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_inode.h [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_inum.h
xfs_iomap.c [XFS] Fix check for block zero access in xfs_write_iomap_allocate() 2008-04-29 15:58:40 +10:00
xfs_iomap.h [XFS] kill unnessecary ioops indirection 2008-02-07 16:44:14 +11:00
xfs_itable.c [XFS] kill di_mode checks after xfs_iget 2008-04-29 15:53:31 +10:00
xfs_itable.h
xfs_log_priv.h [XFS] Reorganise xlog_t for better cacheline isolation of contention 2008-04-18 11:50:53 +10:00
xfs_log_recover.c [XFS] Check for errors when changing buffer pointers. 2008-04-18 12:02:10 +10:00
xfs_log_recover.h
xfs_log.c [XFS] Catch log unmount failures. 2008-04-18 12:02:30 +10:00
xfs_log.h [XFS] Sanitise xfs_log_force error checking. 2008-04-18 12:02:20 +10:00
xfs_mount.c [XFS] kill XFS_ICSB_SB_LOCKED 2008-04-29 15:57:38 +10:00
xfs_mount.h [XFS] fix non-smp xfs build 2008-04-29 15:58:00 +10: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] remove dependency of the quota module on behaviors 2007-10-16 11:43:26 +10:00
xfs_refcache.h
xfs_rename.c [XFS] kill usesless IHOLD calls in xfs_rename 2008-04-29 15:54:24 +10:00
xfs_rtalloc.c [XFS] Propagate errors from xfs_trans_commit(). 2008-04-18 11:58:17 +10:00
xfs_rtalloc.h [XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config 2008-02-07 18:16:43 +11:00
xfs_rw.c [XFS] Sanitise xfs_log_force error checking. 2008-04-18 12:02:20 +10:00
xfs_rw.h [XFS] optimize XFS_IS_REALTIME_INODE w/o realtime config 2008-02-07 18:16:43 +11:00
xfs_sb.h [XFS] Ensure "both" features2 slots are consistent 2008-04-10 16:25:26 +10:00
xfs_trans_ail.c [XFS] replace remaining __FUNCTION__ occurrences 2008-04-18 11:51:26 +10:00
xfs_trans_buf.c [XFS] Ensure errors from xfs_bdstrat() are correctly checked. 2008-04-18 12:00:24 +10:00
xfs_trans_extfree.c [XFS] Radix tree based inode caching 2007-10-15 16:50:50 +10:00
xfs_trans_inode.c [XFS] shrink mrlock_t 2008-04-29 15:54:02 +10:00
xfs_trans_item.c [XFS] Fix up sparse warnings. 2008-02-07 18:14:38 +11:00
xfs_trans_priv.h [XFS] Move AIL pushing into it's own thread 2008-02-07 18:22:51 +11:00
xfs_trans_space.h
xfs_trans.c xfs: convert beX_add to beX_add_cpu (new common API) 2008-02-13 16:21:19 -08:00
xfs_trans.h [XFS] Replace custom AIL linked-list code with struct list_head 2008-04-18 11:41:57 +10:00
xfs_types.h [XFS] remove bhv_vname_t and xfs_rename code 2008-04-18 12:00:12 +10:00
xfs_utils.c [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_utils.h [XFS] remove manual lookup from xfs_rename and simplify locking 2008-04-29 15:54:12 +10:00
xfs_vfsops.c [XFS] remove xfs_log_ticket_zone on rmmod 2008-04-29 15:58:14 +10:00
xfs_vfsops.h [XFS] kill xfs_root 2008-02-07 18:24:00 +11:00
xfs_vnodeops.c [XFS] Fix fsync() b0rkage. 2008-05-23 15:25:25 +10:00
xfs_vnodeops.h [XFS] Fix fsync() b0rkage. 2008-05-23 15:25:25 +10:00
xfs.h [XFS] Fix broken HAVE_SPLICE removal commit. 2008-04-29 15:57:49 +10:00