mirror of https://gitee.com/openkylin/linux.git
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: Christoph Hellwig <hch@lst.de> Reviewed-by: Dave Chinner <david@fromorbit.com>
This commit is contained in:
parent
20026d9201
commit
e8b217e753
|
@ -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.
|
||||
|
|
Loading…
Reference in New Issue