xfs
[Top] [All Lists]

[PATCH 17/19] xfs: remove invalid barrier optimization from xfs_fsync

To: stable@xxxxxxxxxx
Subject: [PATCH 17/19] xfs: remove invalid barrier optimization from xfs_fsync
From: Dave Chinner <david@xxxxxxxxxxxxx>
Date: Fri, 12 Mar 2010 09:42:15 +1100
Cc: xfs@xxxxxxxxxxx
In-reply-to: <1268347337-7160-1-git-send-email-david@xxxxxxxxxxxxx>
References: <1268347337-7160-1-git-send-email-david@xxxxxxxxxxxxx>
From: Christoph Hellwig <hch@xxxxxx>

>From e8b217e7530c6a073ac69f1c85b922d93fdf5647
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@xxxxxx>
Reviewed-by: Dave Chinner <david@xxxxxxxxxxxxx>
---
 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 ae2e44f..38a6324 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,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.
-- 
1.6.5

<Prev in Thread] Current Thread [Next in Thread>