On Thu, Oct 01, 2020 at 08:34:48AM -0500, Eric Sandeen wrote:
A bug existed in the XFS reflink code between v5.1 and v5.5 in which the mapping for a COW IO was not trimmed to the mapping of the COW extent that was found. This resulted in a too-short copy, and corruption of other files which shared the original extent.
(This happened only when extent size hints were set, which bypasses delalloc and led to this code path.)
This was (inadvertently) fixed upstream with
36adcbace24e "xfs: fill out the srcmap in iomap_begin"
and related patches which moved lots of this functionality to the iomap subsystem.
Hence, this is a -stable only patch, targeted to fix this corruption vector without other major code changes.
Fixes: 78f0cc9d55cb ("xfs: don't use delalloc extents for COW on files with extsize hints") Cc: stable@vger.kernel.org # 5.4.x Signed-off-by: Eric Sandeen sandeen@redhat.com Reviewed-by: Darrick J. Wong darrick.wong@oracle.com Reviewed-by: Christoph Hellwig hch@lst.de
V2: Fix typo in subject, add reviewers
I've tested this with a targeted reproducer (in next email) as well as with xfstests.
There is also now a testcase for xfstests submitted upstream
Stable folk, not sure how to send a "stable only" patch, or if that's even valid. Assuming you're willing to accept it, I would still like to have some formal Reviewed-by's from the xfs developer community before it gets merged.
This is perfect stable-process-wise :) Will wait for reviews/acks before merging.