mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
xfs: don't call xfs_exchange_range_finish for a dry run
LOLLM noticed that we strip file privileges and whatnot even for a dry
run. We also shouldn't flush dirty data to disk or trim COW staging
events for a dry run. Neither of those behaviors are allowed by the
manpage, so fix that by exiting early on DRY_RUN in various functions.
Cc: stable@vger.kernel.org # v6.10
Fixes: 42672471f9 ("xfs: bind together the front and back ends of the file range exchange code")
Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Assisted-by: LOLLM # finding obvious bugs
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Carlos Maiolino <cem@kernel.org>
This commit is contained in:
parent
3083ba8dde
commit
8fc18580ec
|
|
@ -633,6 +633,9 @@ xfs_exchrange_prep(
|
|||
if (error)
|
||||
return error;
|
||||
|
||||
if (fxr->flags & XFS_EXCHANGE_RANGE_DRY_RUN)
|
||||
return 0;
|
||||
|
||||
trace_xfs_exchrange_flush(fxr, ip1, ip2);
|
||||
|
||||
/* Flush the relevant ranges of both files. */
|
||||
|
|
@ -709,9 +712,11 @@ xfs_exchrange_contents(
|
|||
* other file write would do. This may involve turning on support for
|
||||
* logged xattrs if either file has security capabilities.
|
||||
*/
|
||||
error = xfs_exchange_range_finish(fxr);
|
||||
if (error)
|
||||
goto out_unlock;
|
||||
if (!(fxr->flags & XFS_EXCHANGE_RANGE_DRY_RUN)) {
|
||||
error = xfs_exchange_range_finish(fxr);
|
||||
if (error)
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
out_unlock:
|
||||
xfs_iunlock2_io_mmap(ip1, ip2);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user