erofs: address D-cache aliasing
authorGao Xiang <hsiangkao@linux.alibaba.com>
Wed, 9 Jul 2025 03:46:14 +0000 (11:46 +0800)
committerGao Xiang <hsiangkao@linux.alibaba.com>
Thu, 10 Jul 2025 09:08:27 +0000 (17:08 +0800)
commit27917e8194f91dffd8b4825350c63cb68e98ce58
treecb09f45d128923b7e1e09f97191ce0bb16ddc0eb
parentf5443d0d1ad775927f1473b1c256ef68f2515b9c
erofs: address D-cache aliasing

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 <jan.kiszka@siemens.com>
Tested-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20250709034614.2780117-2-hsiangkao@linux.alibaba.com
fs/erofs/data.c
fs/erofs/decompressor.c
fs/erofs/fileio.c
fs/erofs/internal.h
fs/erofs/zdata.c