<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/fs/erofs/zdata.c, branch linux-6.15.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.15.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-6.15.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2025-07-17T16:43:58Z</updated>
<entry>
<title>erofs: refine readahead tracepoint</title>
<updated>2025-07-17T16:43:58Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-05-14T12:08:20Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=808c43a772b7c921a133b95f8c009b5d2a356de4'/>
<id>urn:sha1:808c43a772b7c921a133b95f8c009b5d2a356de4</id>
<content type='text'>
[ Upstream commit 4eb56b0761e75034dd35067a81da4c280c178262 ]

 - trace_erofs_readpages =&gt; trace_erofs_readahead;

 - Rename a redundant statement `nrpages = readahead_count(rac);`;

 - Move the tracepoint to the beginning of z_erofs_readahead().

Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Reviewed-by: Hongbo Li &lt;lihongbo22@huawei.com&gt;
Link: https://lore.kernel.org/r/20250514120820.2739288-1-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Stable-dep-of: d53238b614e0 ("erofs: fix to add missing tracepoint in erofs_readahead()")
Signed-off-by: Sasha Levin &lt;sashal@kernel.org&gt;
</content>
</entry>
<entry>
<title>erofs: fix large fragment handling</title>
<updated>2025-07-17T16:43:54Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-07-11T19:58:26Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d71319b74850bfbfab5b6134e74eb7a4eabb53c2'/>
<id>urn:sha1:d71319b74850bfbfab5b6134e74eb7a4eabb53c2</id>
<content type='text'>
commit b44686c8391b427fb1c85a31c35077e6947c6d90 upstream.

Fragments aren't limited by Z_EROFS_PCLUSTER_MAX_DSIZE. However, if
a fragment's logical length is larger than Z_EROFS_PCLUSTER_MAX_DSIZE
but the fragment is not the whole inode, it currently returns
-EOPNOTSUPP because m_flags has the wrong EROFS_MAP_ENCODED flag set.
It is not intended by design but should be rare, as it can only be
reproduced by mkfs with `-Eall-fragments` in a specific case.

Let's normalize fragment m_flags using the new EROFS_MAP_FRAGMENT.

Reported-by: Axel Fontaine &lt;axel@axelfontaine.com&gt;
Closes: https://github.com/erofs/erofs-utils/issues/23
Fixes: 7c3ca1838a78 ("erofs: restrict pcluster size limitations")
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Link: https://lore.kernel.org/r/20250711195826.3601157-1-hsiangkao@linux.alibaba.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>erofs: address D-cache aliasing</title>
<updated>2025-07-17T16:43:54Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-07-09T03:46:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b237006e32a86d53e8f84d3f770c1e8aad5d2c4c'/>
<id>urn:sha1:b237006e32a86d53e8f84d3f770c1e8aad5d2c4c</id>
<content type='text'>
commit 27917e8194f91dffd8b4825350c63cb68e98ce58 upstream.

Flush the D-cache before unlocking folios for compressed inodes, as
they are dirtied during decompression.

Avoid calling flush_dcache_folio() on every CPU write, since it's more
like playing whack-a-mole without real benefit.

It has no impact on x86 and arm64/risc-v: on x86, flush_dcache_folio()
is a no-op, and on arm64/risc-v, PG_dcache_clean (PG_arch_1) is clear
for new page cache folios.  However, certain ARM boards are affected,
as reported.

Fixes: 3883a79abd02 ("staging: erofs: introduce VLE decompression support")
Closes: https://lore.kernel.org/r/c1e51e16-6cc6-49d0-a63e-4e9ff6c4dd53@pengutronix.de
Closes: https://lore.kernel.org/r/38d43fae-1182-4155-9c5b-ffc7382d9917@siemens.com
Tested-by: Jan Kiszka &lt;jan.kiszka@siemens.com&gt;
Tested-by: Stefan Kerkmann &lt;s.kerkmann@pengutronix.de&gt;
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Link: https://lore.kernel.org/r/20250709034614.2780117-2-hsiangkao@linux.alibaba.com
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
</entry>
<entry>
<title>erofs: ensure the extra temporary copy is valid for shortened bvecs</title>
<updated>2025-05-07T01:50:51Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-05-06T10:18:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=35076d2223c731f7be75af61e67f90807384d030'/>
<id>urn:sha1:35076d2223c731f7be75af61e67f90807384d030</id>
<content type='text'>
When compressed data deduplication is enabled, multiple logical extents
may reference the same compressed physical cluster.

The previous commit 94c43de73521 ("erofs: fix wrong primary bvec
selection on deduplicated extents") already avoids using shortened
bvecs.  However, in such cases, the extra temporary buffers also
need to be preserved for later use in z_erofs_fill_other_copies() to
to prevent data corruption.

IOWs, extra temporary buffers have to be retained not only due to
varying start relative offsets (`pageofs_out`, as indicated by
`pcl-&gt;multibases`) but also because of shortened bvecs.

android.hardware.graphics.composer@2.1.so : 270696 bytes
   0:        0..  204185 |  204185 :  628019200.. 628084736 |   65536
-&gt; 1:   204185..  225536 |   21351 :  544063488.. 544129024 |   65536
   2:   225536..  270696 |   45160 :          0..         0 |       0

com.android.vndk.v28.apex : 93814897 bytes
...
   364: 53869896..54095257 |  225361 :  543997952.. 544063488 |   65536
-&gt; 365: 54095257..54309344 |  214087 :  544063488.. 544129024 |   65536
   366: 54309344..54514557 |  205213 :  544129024.. 544194560 |   65536
...

Both 204185 and 54095257 have the same start relative offset of 3481,
but the logical page 55 of `android.hardware.graphics.composer@2.1.so`
ranges from 225280 to 229632, forming a shortened bvec [225280, 225536)
that cannot be used for decompressing the range from 54095257 to
54309344 of `com.android.vndk.v28.apex`.

Since `pcl-&gt;multibases` is already meaningless, just mark `be-&gt;keepxcpy`
on demand for simplicity.

Again, this issue can only lead to data corruption if `-Ededupe` is on.

Fixes: 94c43de73521 ("erofs: fix wrong primary bvec selection on deduplicated extents")
Reviewed-by: Hongbo Li &lt;lihongbo22@huawei.com&gt;
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Link: https://lore.kernel.org/r/20250506101850.191506-1-hsiangkao@linux.alibaba.com
</content>
</entry>
<entry>
<title>erofs: remove duplicate code</title>
<updated>2025-04-10T06:24:05Z</updated>
<author>
<name>Bo Liu</name>
</author>
<published>2025-04-10T04:20:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f5ffef9881a76764477978c39f1ad0136a4adcab'/>
<id>urn:sha1:f5ffef9881a76764477978c39f1ad0136a4adcab</id>
<content type='text'>
Remove duplicate code in function z_erofs_register_pcluster()

Signed-off-by: Bo Liu &lt;liubo03@inspur.com&gt;
Reviewed-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Link: https://lore.kernel.org/r/20250410042048.3044-2-liubo03@inspur.com
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
</content>
</entry>
<entry>
<title>erofs: support unaligned encoded data</title>
<updated>2025-03-17T06:02:15Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-03-10T09:54:59Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7361d1e3763baaf7b9349c576137851458ad38d1'/>
<id>urn:sha1:7361d1e3763baaf7b9349c576137851458ad38d1</id>
<content type='text'>
We're almost there.  It's straight-forward to adapt the current
decompression subsystem to support unaligned encoded (compressed) data.

Note that unaligned data is not encouraged because of worse I/O and
caching efficiency unless the corresponding compressor doesn't support
fixed-sized output compression natively like Zstd.

Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Acked-by: Chao Yu &lt;chao@kernel.org&gt;
Link: https://lore.kernel.org/r/20250310095459.2620647-10-hsiangkao@linux.alibaba.com
</content>
</entry>
<entry>
<title>erofs: initialize decompression early</title>
<updated>2025-03-17T06:02:08Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-03-17T05:48:40Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fe1e57d44d7f106df9048e815e4862cf63921220'/>
<id>urn:sha1:fe1e57d44d7f106df9048e815e4862cf63921220</id>
<content type='text'>
 - Rename erofs_init_managed_cache() to z_erofs_init_super();
 - Move the initialization of managed_pslots into z_erofs_init_super() too;
 - Move z_erofs_init_super() and packed inode preparation upwards, before
   the root inode initialization.

Therefore, the root directory can also be compressible.

Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Acked-by: Chao Yu &lt;chao@kernel.org&gt;
Link: https://lore.kernel.org/r/20250317054840.3483000-1-hsiangkao@linux.alibaba.com
</content>
</entry>
<entry>
<title>erofs: move {in,out}pages into struct z_erofs_decompress_req</title>
<updated>2025-03-16T17:22:50Z</updated>
<author>
<name>Gao Xiang</name>
</author>
<published>2025-03-05T12:40:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0243cc257ffa6d8cb210a3070b687fb510f113c7'/>
<id>urn:sha1:0243cc257ffa6d8cb210a3070b687fb510f113c7</id>
<content type='text'>
It seems that all compressors need those two values, so just move
them into the common structure.

`struct z_erofs_lz4_decompress_ctx` can be dropped too.

Reviewed-by: Chao Yu &lt;chao@kernel.org&gt;
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Link: https://lore.kernel.org/r/20250305124007.1810731-1-hsiangkao@linux.alibaba.com
</content>
</entry>
<entry>
<title>erofs: get rid of erofs_kmap_type</title>
<updated>2025-03-16T17:21:24Z</updated>
<author>
<name>Bo Liu</name>
</author>
<published>2025-02-17T09:31:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=706e50e46af810f521f47e7bfd385f000c4556a0'/>
<id>urn:sha1:706e50e46af810f521f47e7bfd385f000c4556a0</id>
<content type='text'>
Since EROFS_KMAP_ATOMIC is no longer valid, get rid of erofs_kmap_type too.

Signed-off-by: Bo Liu &lt;liubo03@inspur.com&gt;
Reviewed-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
Reviewed-by: Chao Yu &lt;chao@kernel.org&gt;
Link: https://lore.kernel.org/r/20250217093141.2659-1-liubo03@inspur.com
Signed-off-by: Gao Xiang &lt;hsiangkao@linux.alibaba.com&gt;
</content>
</entry>
<entry>
<title>lockref: remove count argument of lockref_init</title>
<updated>2025-02-07T09:27:25Z</updated>
<author>
<name>Andreas Gruenbacher</name>
</author>
<published>2025-01-30T13:56:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bb504b4d64266fa0d7460c218c85afed371db03a'/>
<id>urn:sha1:bb504b4d64266fa0d7460c218c85afed371db03a</id>
<content type='text'>
All users of lockref_init() now initialize the count to 1, so hardcode
that and remove the count argument.

Reviewed-by: Christoph Hellwig &lt;hch@lst.de&gt;
Signed-off-by: Andreas Gruenbacher &lt;agruenba@redhat.com&gt;
Link: https://lore.kernel.org/r/20250130135624.1899988-4-agruenba@redhat.com
Signed-off-by: Christian Brauner &lt;brauner@kernel.org&gt;
</content>
</entry>
</feed>
