| From david@fromorbit.com Fri Apr 2 11:12:06 2010 |
| From: Christoph Hellwig <hch@lst.de> |
| Date: Fri, 12 Mar 2010 09:42:15 +1100 |
| Subject: xfs: remove invalid barrier optimization from xfs_fsync |
| To: stable@kernel.org |
| Cc: xfs@oss.sgi.com |
| Message-ID: <1268347337-7160-18-git-send-email-david@fromorbit.com> |
| |
| |
| From: Christoph Hellwig <hch@lst.de> |
| |
| commit e8b217e7530c6a073ac69f1c85b922d93fdf5647 upstream |
| |
| Date: Tue, 2 Feb 2010 10:16:26 +1100 |
| 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> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| --- |
| fs/xfs/xfs_vnodeops.c | 12 ++---------- |
| 1 file changed, 2 insertions(+), 10 deletions(-) |
| |
| --- 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,19 +627,11 @@ 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_lsn_t)0, |
| XFS_LOG_FORCE | 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 { |
| /* |
| @@ -674,7 +666,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. |