Patch "xfs: update ctime and mtime on clone destinatation inodes" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
xfs: update ctime and mtime on clone destinatation inodes
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xfs-update-ctime-and-mtime-on-clone-destinatation-inodes.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c5ecb42342852892f978572ddc6dca703460f25aMon Sep 17 00:00:00 2001
From: Christoph Hellwig <[email protected]>
Date: Mon, 6 Feb 2017 17:45:51 -0800
Subject: xfs: update ctime and mtime on clone destinatation inodes
From: Christoph Hellwig <[email protected]>
commit c5ecb42342852892f978572ddc6dca703460f25a upstream.
We're changing both metadata and data, so we need to update the timestamps for clone operations. Dedupe on the other hand does not change file data, and only changes invisible metadata so the timestamps should not be updated.
This follows existing btrfs behavior.
--- fs/xfs/xfs_reflink.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-)
fs/xfs/xfs_reflink.c +9 -3
@@ -985,13 +985,14 @@ STATIC intxfs_reflink_update_dest ( struct xfs_inode *dest, xfs_off_t newlen, - xfs_extlen_t cowextsize) + xfs_extlen_t cowextsize, + bool is_dedupe) { struct xfs_mount *mp = dest->i_mount;struct xfs_trans *tp;int error; -if (newlen <=i_size_read (VFS_I (dest)) && cowextsize ==0 ) +if (is_dedupe && newlen <=i_size_read (VFS_I (dest)) && cowextsize ==0 )return 0 ; error =xfs_trans_alloc (mp, &M_RES (mp)->tr_ichange,0 ,0 ,0 , &tp);
@@ -1012,6 +1013,10 @@ xfs_reflink_update_dest( dest->i_d.di_flags2 |=XFS_DIFLAG2_COWEXTSIZE ; } +if (!is_dedupe) { +xfs_trans_ichgtime (tp, dest, +XFS_ICHGTIME_MOD |XFS_ICHGTIME_CHG ); + }xfs_trans_log_inode (tp, dest,XFS_ILOG_CORE ); error =xfs_trans_commit (tp);
@@ -1528,7 +1533,8 @@ xfs_reflink_remap_range( !(dest->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE)) cowextsize = src->i_d.di_cowextsize; - ret =xfs_reflink_update_dest (dest, pos_out + len, cowextsize); + ret =xfs_reflink_update_dest (dest, pos_out + len, cowextsize, + is_dedupe); out_unlock:xfs_iunlock (src,XFS_MMAPLOCK_EXCL );
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/xfs-mark-speculative-prealloc-cow-fork-extents-unwritten.patch queue-4.9/xfs-fix-toctou-race-when-locking-an-inode-to-access-the-data-map.patch queue-4.9/xfs-use-iomap-new-flag-for-newly-allocated-delalloc-blocks.patch queue-4.9/xfs-reject-all-unaligned-direct-writes-to-reflinked-files.patch queue-4.9/xfs-allow-unwritten-extents-in-the-cow-fork.patch queue-4.9/xfs-tune-down-agno-asserts-in-the-bmap-code.patch queue-4.9/xfs-verify-free-block-header-fields.patch queue-4.9/xfs-check-for-obviously-bad-level-values-in-the-bmbt-root.patch queue-4.9/xfs-don-t-fail-xfs_extent_busy-allocation.patch queue-4.9/xfs-sync-eofblocks-scans-under-iolock-are-livelock-prone.patch queue-4.9/xfs-use-per-ag-reservations-for-the-finobt.patch queue-4.9/xfs-pull-up-iolock-from-xfs_free_eofblocks.patch queue-4.9/xfs-fail-_dir_open-when-readahead-fails.patch queue-4.9/xfs-update-ctime-and-mtime-on-clone-destinatation-inodes.patch queue-4.9/xfs-only-update-mount-resv-fields-on-success-in-__xfs_ag_resv_init.patch queue-4.9/xfs-use-xfs_icluster_size_fsb-to-calculate-inode-chunk-alignment.patch queue-4.9/xfs-only-reclaim-unwritten-cow-extents-periodically.patch queue-4.9/xfs-try-any-ag-when-allocating-the-first-btree-block-when-reflinking.patch queue-4.9/xfs-fix-and-streamline-error-handling-in-xfs_end_io.patch queue-4.9/xfs-fix-eofblocks-race-with-file-extending-async-dio-writes.patch