GNU bug report logs -
#79267
cp --sparse=auto heuristic fails on a squashfs mounted drive.
Previous Next
Full log
Message #51 received at 79267 <at> debbugs.gnu.org (full text, mbox):
Hi Paul,
I tested with the code currently in the master branch in coreutils -
top of tree respec is 4bfcf62f74b38d762ee06ceef582c326023635a9.
This current code still fixes my testcase thanks !
For full reference, it contains the 3 relevant patches:
commit 6c668dc133af7d374790c1da666a701e21682a35
Author: Pádraig Brady <P <at> draigBrady.com>
Date: Sat Aug 23 18:53:17 2025 +0100
tests: cp: ensure copy offload is not disabled for sparse files
Related to commits v9.1-109-g879d2180d and v9.7-248-g306de6c26
* tests/cp/sparse-perf.sh: This edge case was missed a couple of times,
so add a test to ensure we attempt copy offload.
commit 39f22fe687ea0c226e3fb35e86cd5ea329180b80
Author: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Fri Aug 22 17:34:04 2025 -0700
cp: improve hole handling on squashfs
Better fix for problem reported by Jeremy Allison
<https://bugs.gnu.org/79267>.
* src/copy.c (struct scan_inference): New type, replacing
union scan_inference. All uses changed. This is so
infer_scantype can report the first hole's offset when known.
(lseek_copy): 5th arg is now struct scan_inference const *,
not just off_t. All uses changed.
(infer_scantype): If SEEK_SET+SEEK_HOLE do not find a hole,
fall back on ZERO_SCANTYPE.
commit 306de6c2619e2a9339ade9a88d55c4940942d516
Author: Paul Eggert <eggert <at> cs.ucla.edu>
Date: Fri Aug 22 10:37:50 2025 -0700
cp: go back to copy_file_range optimization
This reverts part of the previous change.
* src/copy.c (lseek_copy): When calling sparse_copy, do not
ask it to scan for zeros unless --sparse=always, so that it
can use copy_file_range which can be far more efficient.
Cheers,
Jeremy.
On Fri, Aug 22, 2025 at 5:48 PM Paul Eggert <eggert <at> cs.ucla.edu> wrote:
>
> On 8/22/25 07:04, Pádraig Brady wrote:
> > /* Copy this extent, looking for further opportunities to not
> > bother to write zeros if --sparse=always, since SEEK_HOLE
> > is conservative and may miss some holes. */
> >
> > So the comment needs to be tweaked, but a more general issue
> > is that it disables copy offloading (copy_file_range) for sparse files.
>
> Ouch, I didn't see that. That's a real loss. I installed the first
> attached patch to revert that part of my recent change.
>
> I assume the part of the change that always punches holes is OK. I
> couldn't see why one would not want to punch a hole if one has already
> taken the trouble to find and create the hole.
>
> > BTW commit 26bf557 also changed this a couple of weeks ago
> > without updating the comment, so the comment relates to sparse_mode !=
> > SPARSE_ALWAYS.
>
> Not quite following but I hope the comment is OK now with the first
> patch installed.
>
> > squashfs is giving the wrong info here after all,
> > right?
>
> Yes, that's the actual space-performance bug here. I installed the
> second attached patch to try to work around it.
>
> Jeremy, can you please try these two further patches? Thanks.
This bug report was last modified 17 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.