bug#79267: cp --sparse=auto heuristic fails on a squashfs mounted drive.

Phillip Lougher <[email protected]>
Newsgroups gmane.comp.gnu.core-utils.bugs
Message-ID <[email protected]>
On 11/3/25 15:47, Paul Eggert wrote:
> On 2025-08-23 12:03, Paul Eggert wrote:
>> On 2025-08-23 11:46, Phillip Lougher wrote:
>>> As far as Squashfs is concerned SEEK_HOLE/SEEK_DATA is easy to 
>>> implement.  So I'll think about adding it as a build option.
>>
>> Thanks, that'll be helpful.
>>
>>> But this isn't going to fix it for any other case.
>>
>> Right, and bleeding-edge coreutils already has a (slowish) workaround 
>> for Squashfs as-is, as well as for other file systems that don't 
>> expose extents to user code. If I get around to it I will install 
>> similar workarounds in other user code I help maintain.
>
> Phillip, as it turns out "slowish" was an understatement, as the 
> performance regression was so bad for OpenZFS that we plan to stop 
> using the workaround in the next release of GNU Coreutils. This change 
> will resurrect coreutils bug #79267, i.e., coreutils copying from 
> squashfs filesystems will no longer look for holes, and will create 
> unnecessary explicit zeros in the output. For details, please see:
>
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=79267#54
> https://github.com/coreutils/coreutils/issues/122
>
> Implementing SEEK_HOLE and SEEK_DATA for squashfs would be a better 
> way to fix the squashfs+coreutils performance bug. It's OK if squashfs 
> uses 128 KiB or 1 MiB block sizes for this, as Coreutils will work 
> fine either way.

I implemented it in September, and it is in the upstream kernel 
(currently at 2.18-rc4).

See

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dec91e7ab10ec465d59144aabe69c01723ddd1c4

https://www.phoronix.com/news/Linux-6.18-Non-MM-PR

Phillip
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.