Skip to content

Commit

Permalink
xfs: remove invalid barrier optimization from xfs_fsync
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Christoph Hellwig authored and Dave Chinner committed Feb 1, 2010
1 parent 20026d9 commit e8b217e
Showing 1 changed file with 2 additions and 10 deletions.
12 changes: 2 additions & 10 deletions fs/xfs/xfs_vnodeops.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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 {
/*
Expand Down Expand Up @@ -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.
Expand Down

0 comments on commit e8b217e

Please sign in to comment.