Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8b217e7 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dave Chinner
Browse files

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: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <david@fromorbit.com>
parent 20026d92
Loading
Loading
Loading
Loading
+2 −10
Original line number Diff line number Diff line
@@ -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.