Commit aa9f812b authored by Dave Chinner's avatar Dave Chinner Committed by Long Li
Browse files

xfs: remove XFS_PREALLOC_SYNC

stable inclusion
from stable-v5.10.167
commit 35f049abbae3954fe2c3d57d62fe6624d9b29df6
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I76JSK
CVE: NA

Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.10.y&id=35f049abbae3954fe2c3d57d62fe6624d9b29df6



--------------------------------

commit 472c6e46 upstream.

[partial backport for dependency -
 xfs_ioc_space() still uses XFS_PREALLOC_SYNC]

Callers can acheive the same thing by calling xfs_log_force_inode()
after making their modifications. There is no need for
xfs_update_prealloc_flags() to do this.

Signed-off-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarDarrick J. Wong <djwong@kernel.org>
Signed-off-by: default avatarAmir Goldstein <amir73il@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarWang Hai <wanghai38@huawei.com>
Signed-off-by: default avatarLong Li <leo.lilong@huawei.com>
parent 1b6332d7
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -95,8 +95,6 @@ xfs_update_prealloc_flags(
		ip->i_d.di_flags &= ~XFS_DIFLAG_PREALLOC;

	xfs_trans_log_inode(tp, ip, XFS_ILOG_CORE);
	if (flags & XFS_PREALLOC_SYNC)
		xfs_trans_set_sync(tp);
	return xfs_trans_commit(tp);
}

@@ -1044,9 +1042,6 @@ xfs_file_fallocate(
		}
	}

	if (file->f_flags & O_DSYNC)
		flags |= XFS_PREALLOC_SYNC;

	error = xfs_update_prealloc_flags(ip, flags);
	if (error)
		goto out_unlock;
@@ -1068,8 +1063,14 @@ xfs_file_fallocate(
	 * leave shifted extents past EOF and hence losing access to
	 * the data that is contained within them.
	 */
	if (do_file_insert)
	if (do_file_insert) {
		error = xfs_insert_file_space(ip, offset, len);
		if (error)
			goto out_unlock;
	}

	if (file->f_flags & O_DSYNC)
		error = xfs_log_force_inode(ip);

out_unlock:
	xfs_iunlock(ip, iolock);
+4 −2
Original line number Diff line number Diff line
@@ -164,10 +164,12 @@ xfs_fs_map_blocks(
		 * that the blocks allocated and handed out to the client are
		 * guaranteed to be present even after a server crash.
		 */
		error = xfs_update_prealloc_flags(ip,
				XFS_PREALLOC_SET | XFS_PREALLOC_SYNC);
		error = xfs_update_prealloc_flags(ip, XFS_PREALLOC_SET);
		if (!error)
			error = xfs_log_force_inode(ip);
		if (error)
			goto out_unlock;

	} else {
		xfs_iunlock(ip, lock_flags);
	}