diff options
author | Christoph Hellwig <hch@lst.de> | 2010-02-02 10:16:26 +1100 |
---|---|---|
committer | Dave Chinner <david@fromorbit.com> | 2010-02-02 10:16:26 +1100 |
commit | e8b217e7530c6a073ac69f1c85b922d93fdf5647 (patch) | |
tree | 09d9ce38d3baa747190c16eaffd39462259179ae /fs | |
parent | 20026d92013d7bb3abb295337191def6758fc086 (diff) | |
download | linux-e8b217e7530c6a073ac69f1c85b922d93fdf5647.tar.gz linux-e8b217e7530c6a073ac69f1c85b922d93fdf5647.tar.bz2 linux-e8b217e7530c6a073ac69f1c85b922d93fdf5647.zip |
xfs: remove invalid barrier optimization from xfs_fsync
We always need to flush the disk write cache and can't skip it just because
the no inode attributes have changed.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Dave Chinner <david@fromorbit.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 12 |
1 files changed, 2 insertions, 10 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index fd108b738559..43241e289800 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -597,7 +597,7 @@ xfs_fsync( { xfs_trans_t *tp; int error = 0; - int log_flushed = 0, changed = 1; + int log_flushed = 0; xfs_itrace_entry(ip); @@ -627,18 +627,10 @@ xfs_fsync( * disk yet, the inode will be still be pinned. If it is, * force the log. */ - xfs_iunlock(ip, XFS_ILOCK_SHARED); - if (xfs_ipincount(ip)) { error = _xfs_log_force(ip->i_mount, XFS_LOG_SYNC, &log_flushed); - } else { - /* - * If the inode is not pinned and nothing has changed - * we don't need to flush the cache. - */ - changed = 0; } } else { /* @@ -673,7 +665,7 @@ xfs_fsync( xfs_iunlock(ip, XFS_ILOCK_EXCL); } - if ((ip->i_mount->m_flags & XFS_MOUNT_BARRIER) && changed) { + if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) { /* * If the log write didn't issue an ordered tag we need * to flush the disk cache for the data device now. |