diff options
-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( | |||
597 | { | 597 | { |
598 | xfs_trans_t *tp; | 598 | xfs_trans_t *tp; |
599 | int error = 0; | 599 | int error = 0; |
600 | int log_flushed = 0, changed = 1; | 600 | int log_flushed = 0; |
601 | 601 | ||
602 | xfs_itrace_entry(ip); | 602 | xfs_itrace_entry(ip); |
603 | 603 | ||
@@ -627,18 +627,10 @@ xfs_fsync( | |||
627 | * disk yet, the inode will be still be pinned. If it is, | 627 | * disk yet, the inode will be still be pinned. If it is, |
628 | * force the log. | 628 | * force the log. |
629 | */ | 629 | */ |
630 | |||
631 | xfs_iunlock(ip, XFS_ILOCK_SHARED); | 630 | xfs_iunlock(ip, XFS_ILOCK_SHARED); |
632 | |||
633 | if (xfs_ipincount(ip)) { | 631 | if (xfs_ipincount(ip)) { |
634 | error = _xfs_log_force(ip->i_mount, XFS_LOG_SYNC, | 632 | error = _xfs_log_force(ip->i_mount, XFS_LOG_SYNC, |
635 | &log_flushed); | 633 | &log_flushed); |
636 | } else { | ||
637 | /* | ||
638 | * If the inode is not pinned and nothing has changed | ||
639 | * we don't need to flush the cache. | ||
640 | */ | ||
641 | changed = 0; | ||
642 | } | 634 | } |
643 | } else { | 635 | } else { |
644 | /* | 636 | /* |
@@ -673,7 +665,7 @@ xfs_fsync( | |||
673 | xfs_iunlock(ip, XFS_ILOCK_EXCL); | 665 | xfs_iunlock(ip, XFS_ILOCK_EXCL); |
674 | } | 666 | } |
675 | 667 | ||
676 | if ((ip->i_mount->m_flags & XFS_MOUNT_BARRIER) && changed) { | 668 | if (ip->i_mount->m_flags & XFS_MOUNT_BARRIER) { |
677 | /* | 669 | /* |
678 | * If the log write didn't issue an ordered tag we need | 670 | * If the log write didn't issue an ordered tag we need |
679 | * to flush the disk cache for the data device now. | 671 | * to flush the disk cache for the data device now. |