aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/linux-2.6/xfs_aops.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@infradead.org>2010-02-15 04:44:49 -0500
committerAlex Elder <aelder@sgi.com>2010-03-01 17:34:45 -0500
commit66d834ea603d61bd90fedad90300ca91c5bba0a3 (patch)
treef73072b9d87bd71a0739f07e4d0e26f10c5d925a /fs/xfs/linux-2.6/xfs_aops.c
parentfd3200bef7d66ed3924f72c79a465fb7ff85478a (diff)
xfs: implement optimized fdatasync
Allow us to track the difference between timestamp and size updates by using mark_inode_dirty from the I/O completion code, and checking the VFS inode flags in xfs_file_fsync. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <david@fromorbit.com> Signed-off-by: Alex Elder <aelder@sgi.com>
Diffstat (limited to 'fs/xfs/linux-2.6/xfs_aops.c')
-rw-r--r--fs/xfs/linux-2.6/xfs_aops.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/fs/xfs/linux-2.6/xfs_aops.c b/fs/xfs/linux-2.6/xfs_aops.c
index 66abe36c1213..ce369a816ce3 100644
--- a/fs/xfs/linux-2.6/xfs_aops.c
+++ b/fs/xfs/linux-2.6/xfs_aops.c
@@ -187,7 +187,7 @@ xfs_setfilesize(
187 isize = xfs_ioend_new_eof(ioend); 187 isize = xfs_ioend_new_eof(ioend);
188 if (isize) { 188 if (isize) {
189 ip->i_d.di_size = isize; 189 ip->i_d.di_size = isize;
190 xfs_mark_inode_dirty_sync(ip); 190 xfs_mark_inode_dirty(ip);
191 } 191 }
192 192
193 xfs_iunlock(ip, XFS_ILOCK_EXCL); 193 xfs_iunlock(ip, XFS_ILOCK_EXCL);
@@ -341,7 +341,7 @@ xfs_submit_ioend_bio(
341 * but don't update the inode size until I/O completion. 341 * but don't update the inode size until I/O completion.
342 */ 342 */
343 if (xfs_ioend_new_eof(ioend)) 343 if (xfs_ioend_new_eof(ioend))
344 xfs_mark_inode_dirty_sync(XFS_I(ioend->io_inode)); 344 xfs_mark_inode_dirty(XFS_I(ioend->io_inode));
345 345
346 submit_bio(wbc->sync_mode == WB_SYNC_ALL ? 346 submit_bio(wbc->sync_mode == WB_SYNC_ALL ?
347 WRITE_SYNC_PLUG : WRITE, bio); 347 WRITE_SYNC_PLUG : WRITE, bio);