stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing`
@ 2025-07-22 10:00 Gao Xiang
  2025-07-22 10:00 ` [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry() Gao Xiang
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang

6.6.y fix: https://lore.kernel.org/r/20250722094449.2950654-1-hsiangkao@linux.alibaba.com

Hi Jan & Stefan,
Please help confirm this 6.1 fix backport if possible too.

Thanks,
Gao Xiang

Gao Xiang (5):
  erofs: get rid of debug_one_dentry()
  erofs: sunset erofs_dbg()
  erofs: drop z_erofs_page_mark_eio()
  erofs: simplify z_erofs_transform_plain()
  erofs: address D-cache aliasing

 fs/erofs/decompressor.c | 23 +++++++----------
 fs/erofs/dir.c          | 17 -------------
 fs/erofs/inode.c        |  3 ---
 fs/erofs/internal.h     |  2 --
 fs/erofs/namei.c        |  9 +++----
 fs/erofs/zdata.c        | 56 +++++++++++++++++------------------------
 fs/erofs/zmap.c         |  3 ---
 7 files changed, 35 insertions(+), 78 deletions(-)

-- 
2.43.5


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry()
  2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
@ 2025-07-22 10:00 ` Gao Xiang
  2025-07-23  4:34   ` Sasha Levin
  2025-07-22 10:00 ` [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg() Gao Xiang
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang, Yue Hu, Jingbo Xu, Chao Yu

commit e324eaa9790614577c93e819651e0a83963dac79 upstream.

Since erofsdump is available, no need to keep this debugging
functionality at all.

Also drop a useless comment since it's the VFS behavior.

Link: https://lore.kernel.org/r/20230114125746.399253-1-xiang@kernel.org
Reviewed-by: Yue Hu <huyue2@coolpad.com>
Reviewed-by: Jingbo Xu <jefflexu@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
 fs/erofs/dir.c | 17 -----------------
 1 file changed, 17 deletions(-)

diff --git a/fs/erofs/dir.c b/fs/erofs/dir.c
index 966a88cc529e..963bbed0b699 100644
--- a/fs/erofs/dir.c
+++ b/fs/erofs/dir.c
@@ -6,21 +6,6 @@
  */
 #include "internal.h"
 
-static void debug_one_dentry(unsigned char d_type, const char *de_name,
-			     unsigned int de_namelen)
-{
-#ifdef CONFIG_EROFS_FS_DEBUG
-	/* since the on-disk name could not have the trailing '\0' */
-	unsigned char dbg_namebuf[EROFS_NAME_LEN + 1];
-
-	memcpy(dbg_namebuf, de_name, de_namelen);
-	dbg_namebuf[de_namelen] = '\0';
-
-	erofs_dbg("found dirent %s de_len %u d_type %d", dbg_namebuf,
-		  de_namelen, d_type);
-#endif
-}
-
 static int erofs_fill_dentries(struct inode *dir, struct dir_context *ctx,
 			       void *dentry_blk, struct erofs_dirent *de,
 			       unsigned int nameoff, unsigned int maxsize)
@@ -52,10 +37,8 @@ static int erofs_fill_dentries(struct inode *dir, struct dir_context *ctx,
 			return -EFSCORRUPTED;
 		}
 
-		debug_one_dentry(d_type, de_name, de_namelen);
 		if (!dir_emit(ctx, de_name, de_namelen,
 			      le64_to_cpu(de->nid), d_type))
-			/* stopped by some reason */
 			return 1;
 		++de;
 		ctx->pos += sizeof(struct erofs_dirent);
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg()
  2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
  2025-07-22 10:00 ` [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry() Gao Xiang
@ 2025-07-22 10:00 ` Gao Xiang
  2025-07-23  4:34   ` Sasha Levin
  2025-07-22 10:00 ` [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio() Gao Xiang
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang, Chao Yu

commit 10656f9ca60ed85f4cfc06bcbe1f240ee310fa8c upstream.

Such debug messages are rarely used now.  Let's get rid of these,
and revert locally if they are needed for debugging.

Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20230414083027.12307-1-hsiangkao@linux.alibaba.com
---
 fs/erofs/inode.c    | 3 ---
 fs/erofs/internal.h | 2 --
 fs/erofs/namei.c    | 9 +++------
 fs/erofs/zdata.c    | 5 -----
 fs/erofs/zmap.c     | 3 ---
 5 files changed, 3 insertions(+), 19 deletions(-)

diff --git a/fs/erofs/inode.c b/fs/erofs/inode.c
index 7dcf350b9fef..3cbef6318b7b 100644
--- a/fs/erofs/inode.c
+++ b/fs/erofs/inode.c
@@ -26,9 +26,6 @@ static void *erofs_read_inode(struct erofs_buf *buf,
 	blkaddr = erofs_blknr(sb, inode_loc);
 	*ofs = erofs_blkoff(sb, inode_loc);
 
-	erofs_dbg("%s, reading inode nid %llu at %u of blkaddr %u",
-		  __func__, vi->nid, *ofs, blkaddr);
-
 	kaddr = erofs_read_metabuf(buf, sb, blkaddr, EROFS_KMAP);
 	if (IS_ERR(kaddr)) {
 		erofs_err(sb, "failed to get inode (nid: %llu) page, err %ld",
diff --git a/fs/erofs/internal.h b/fs/erofs/internal.h
index d7cd1e619d46..126970932805 100644
--- a/fs/erofs/internal.h
+++ b/fs/erofs/internal.h
@@ -32,10 +32,8 @@ __printf(3, 4) void _erofs_info(struct super_block *sb,
 #define erofs_info(sb, fmt, ...) \
 	_erofs_info(sb, __func__, fmt "\n", ##__VA_ARGS__)
 #ifdef CONFIG_EROFS_FS_DEBUG
-#define erofs_dbg(x, ...)       pr_debug(x "\n", ##__VA_ARGS__)
 #define DBG_BUGON               BUG_ON
 #else
-#define erofs_dbg(x, ...)       ((void)0)
 #define DBG_BUGON(x)            ((void)(x))
 #endif	/* !CONFIG_EROFS_FS_DEBUG */
 
diff --git a/fs/erofs/namei.c b/fs/erofs/namei.c
index 8332428b780c..c0d5ffb62420 100644
--- a/fs/erofs/namei.c
+++ b/fs/erofs/namei.c
@@ -203,16 +203,13 @@ static struct dentry *erofs_lookup(struct inode *dir, struct dentry *dentry,
 
 	err = erofs_namei(dir, &dentry->d_name, &nid, &d_type);
 
-	if (err == -ENOENT) {
+	if (err == -ENOENT)
 		/* negative dentry */
 		inode = NULL;
-	} else if (err) {
+	else if (err)
 		inode = ERR_PTR(err);
-	} else {
-		erofs_dbg("%s, %pd (nid %llu) found, d_type %u", __func__,
-			  dentry, nid, d_type);
+	else
 		inode = erofs_iget(dir->i_sb, nid);
-	}
 	return d_splice_alias(inode, dentry);
 }
 
diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
index 32ca6d3e373a..5c0f855ab18d 100644
--- a/fs/erofs/zdata.c
+++ b/fs/erofs/zdata.c
@@ -818,8 +818,6 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe,
 
 	if (offset + cur < map->m_la ||
 	    offset + cur >= map->m_la + map->m_llen) {
-		erofs_dbg("out-of-range map @ pos %llu", offset + cur);
-
 		if (z_erofs_collector_end(fe))
 			fe->backmost = false;
 		map->m_la = offset + cur;
@@ -935,9 +933,6 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe,
 	if (err)
 		z_erofs_page_mark_eio(page);
 	z_erofs_onlinepage_endio(page);
-
-	erofs_dbg("%s, finish page: %pK spiltted: %u map->m_llen %llu",
-		  __func__, page, spiltted, map->m_llen);
 	return err;
 }
 
diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c
index 2cd70cf4c8b2..d2d7fe826091 100644
--- a/fs/erofs/zmap.c
+++ b/fs/erofs/zmap.c
@@ -603,9 +603,6 @@ static int z_erofs_do_map_blocks(struct inode *inode,
 
 unmap_out:
 	erofs_unmap_metabuf(&m.map->buf);
-	erofs_dbg("%s, m_la %llu m_pa %llu m_llen %llu m_plen %llu m_flags 0%o",
-		  __func__, map->m_la, map->m_pa,
-		  map->m_llen, map->m_plen, map->m_flags);
 	return err;
 }
 
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio()
  2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
  2025-07-22 10:00 ` [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry() Gao Xiang
  2025-07-22 10:00 ` [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg() Gao Xiang
@ 2025-07-22 10:00 ` Gao Xiang
  2025-07-23  4:34   ` Sasha Levin
  2025-07-22 10:00 ` [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain() Gao Xiang
  2025-07-22 10:00 ` [PATCH 6.1.y 5/5] erofs: address D-cache aliasing Gao Xiang
  4 siblings, 1 reply; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang, Yue Hu, Chao Yu

commit 9a05c6a8bc26138d34e87b39e6a815603bc2a66c upstream.

It can be folded into z_erofs_onlinepage_endio() to simplify the code.

Reviewed-by: Yue Hu <huyue2@coolpad.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Link: https://lore.kernel.org/r/20230817082813.81180-5-hsiangkao@linux.alibaba.com
---
 fs/erofs/zdata.c | 29 +++++++++--------------------
 1 file changed, 9 insertions(+), 20 deletions(-)

diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
index 5c0f855ab18d..b05ca443cfdf 100644
--- a/fs/erofs/zdata.c
+++ b/fs/erofs/zdata.c
@@ -144,22 +144,17 @@ static inline void z_erofs_onlinepage_split(struct page *page)
 	atomic_inc((atomic_t *)&page->private);
 }
 
-static inline void z_erofs_page_mark_eio(struct page *page)
+static void z_erofs_onlinepage_endio(struct page *page, int err)
 {
-	int orig;
+	int orig, v;
+
+	DBG_BUGON(!PagePrivate(page));
 
 	do {
 		orig = atomic_read((atomic_t *)&page->private);
-	} while (atomic_cmpxchg((atomic_t *)&page->private, orig,
-				orig | Z_EROFS_PAGE_EIO) != orig);
-}
-
-static inline void z_erofs_onlinepage_endio(struct page *page)
-{
-	unsigned int v;
+		v = (orig - 1) | (err ? Z_EROFS_PAGE_EIO : 0);
+	} while (atomic_cmpxchg((atomic_t *)&page->private, orig, v) != orig);
 
-	DBG_BUGON(!PagePrivate(page));
-	v = atomic_dec_return((atomic_t *)&page->private);
 	if (!(v & ~Z_EROFS_PAGE_EIO)) {
 		set_page_private(page, 0);
 		ClearPagePrivate(page);
@@ -930,9 +925,7 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe,
 		goto repeat;
 
 out:
-	if (err)
-		z_erofs_page_mark_eio(page);
-	z_erofs_onlinepage_endio(page);
+	z_erofs_onlinepage_endio(page, err);
 	return err;
 }
 
@@ -1035,9 +1028,7 @@ static void z_erofs_fill_other_copies(struct z_erofs_decompress_backend *be,
 			cur += len;
 		}
 		kunmap_local(dst);
-		if (err)
-			z_erofs_page_mark_eio(bvi->bvec.page);
-		z_erofs_onlinepage_endio(bvi->bvec.page);
+		z_erofs_onlinepage_endio(bvi->bvec.page, err);
 		list_del(p);
 		kfree(bvi);
 	}
@@ -1205,9 +1196,7 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be,
 		/* recycle all individual short-lived pages */
 		if (z_erofs_put_shortlivedpage(be->pagepool, page))
 			continue;
-		if (err)
-			z_erofs_page_mark_eio(page);
-		z_erofs_onlinepage_endio(page);
+		z_erofs_onlinepage_endio(page, err);
 	}
 
 	if (be->decompressed_pages != be->onstack_pages)
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain()
  2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
                   ` (2 preceding siblings ...)
  2025-07-22 10:00 ` [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio() Gao Xiang
@ 2025-07-22 10:00 ` Gao Xiang
  2025-07-23  4:34   ` Sasha Levin
  2025-07-22 10:00 ` [PATCH 6.1.y 5/5] erofs: address D-cache aliasing Gao Xiang
  4 siblings, 1 reply; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang, Yue Hu, Chao Yu

commit c5539762f32e97c5e16215fa1336e32095b8b0fd upstream.

Use memcpy_to_page() instead of open-coding them.

In addition, add a missing flush_dcache_page() even though almost all
modern architectures clear `PG_dcache_clean` flag for new file cache
pages so that it doesn't change anything in practice.

Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
Reviewed-by: Yue Hu <huyue2@coolpad.com>
Reviewed-by: Chao Yu <chao@kernel.org>
Link: https://lore.kernel.org/r/20230627161240.331-2-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
 fs/erofs/decompressor.c | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c
index 0eaa9e495346..b1746215efe6 100644
--- a/fs/erofs/decompressor.c
+++ b/fs/erofs/decompressor.c
@@ -323,7 +323,7 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq,
 	const unsigned int lefthalf = rq->outputsize - righthalf;
 	const unsigned int interlaced_offset =
 		rq->alg == Z_EROFS_COMPRESSION_SHIFTED ? 0 : rq->pageofs_out;
-	unsigned char *src, *dst;
+	u8 *src;
 
 	if (outpages > 2 && rq->alg == Z_EROFS_COMPRESSION_SHIFTED) {
 		DBG_BUGON(1);
@@ -336,22 +336,19 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq,
 	}
 
 	src = kmap_local_page(rq->in[inpages - 1]) + rq->pageofs_in;
-	if (rq->out[0]) {
-		dst = kmap_local_page(rq->out[0]);
-		memcpy(dst + rq->pageofs_out, src + interlaced_offset,
-		       righthalf);
-		kunmap_local(dst);
-	}
+	if (rq->out[0])
+		memcpy_to_page(rq->out[0], rq->pageofs_out,
+			       src + interlaced_offset, righthalf);
 
 	if (outpages > inpages) {
 		DBG_BUGON(!rq->out[outpages - 1]);
 		if (rq->out[outpages - 1] != rq->in[inpages - 1]) {
-			dst = kmap_local_page(rq->out[outpages - 1]);
-			memcpy(dst, interlaced_offset ? src :
-					(src + righthalf), lefthalf);
-			kunmap_local(dst);
+			memcpy_to_page(rq->out[outpages - 1], 0, src +
+					(interlaced_offset ? 0 : righthalf),
+				       lefthalf);
 		} else if (!interlaced_offset) {
 			memmove(src, src + righthalf, lefthalf);
+			flush_dcache_page(rq->in[inpages - 1]);
 		}
 	}
 	kunmap_local(src);
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH 6.1.y 5/5] erofs: address D-cache aliasing
  2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
                   ` (3 preceding siblings ...)
  2025-07-22 10:00 ` [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain() Gao Xiang
@ 2025-07-22 10:00 ` Gao Xiang
  2025-07-23  4:34   ` Sasha Levin
  4 siblings, 1 reply; 11+ messages in thread
From: Gao Xiang @ 2025-07-22 10:00 UTC (permalink / raw)
  To: stable, Greg Kroah-Hartman, Jan Kiszka, Stefan Kerkmann
  Cc: linux-erofs, LKML, Gao Xiang

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 <jan.kiszka@siemens.com>
Tested-by: Stefan Kerkmann <s.kerkmann@pengutronix.de>
Link: https://lore.kernel.org/r/20250709034614.2780117-2-hsiangkao@linux.alibaba.com
Signed-off-by: Gao Xiang <hsiangkao@linux.alibaba.com>
---
 fs/erofs/decompressor.c |  6 ++----
 fs/erofs/zdata.c        | 32 +++++++++++++++++++-------------
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/fs/erofs/decompressor.c b/fs/erofs/decompressor.c
index b1746215efe6..e524c0b432f3 100644
--- a/fs/erofs/decompressor.c
+++ b/fs/erofs/decompressor.c
@@ -342,14 +342,12 @@ static int z_erofs_transform_plain(struct z_erofs_decompress_req *rq,
 
 	if (outpages > inpages) {
 		DBG_BUGON(!rq->out[outpages - 1]);
-		if (rq->out[outpages - 1] != rq->in[inpages - 1]) {
+		if (rq->out[outpages - 1] != rq->in[inpages - 1])
 			memcpy_to_page(rq->out[outpages - 1], 0, src +
 					(interlaced_offset ? 0 : righthalf),
 				       lefthalf);
-		} else if (!interlaced_offset) {
+		else if (!interlaced_offset)
 			memmove(src, src + righthalf, lefthalf);
-			flush_dcache_page(rq->in[inpages - 1]);
-		}
 	}
 	kunmap_local(src);
 	return 0;
diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
index b05ca443cfdf..5e6580217318 100644
--- a/fs/erofs/zdata.c
+++ b/fs/erofs/zdata.c
@@ -123,9 +123,11 @@ static inline unsigned int z_erofs_pclusterpages(struct z_erofs_pcluster *pcl)
 
 /*
  * bit 30: I/O error occurred on this page
+ * bit 29: CPU has dirty data in D-cache (needs aliasing handling);
  * bit 0 - 29: remaining parts to complete this page
  */
-#define Z_EROFS_PAGE_EIO			(1 << 30)
+#define Z_EROFS_ONLINEPAGE_EIO		30
+#define Z_EROFS_ONLINEPAGE_DIRTY	29
 
 static inline void z_erofs_onlinepage_init(struct page *page)
 {
@@ -144,7 +146,7 @@ static inline void z_erofs_onlinepage_split(struct page *page)
 	atomic_inc((atomic_t *)&page->private);
 }
 
-static void z_erofs_onlinepage_endio(struct page *page, int err)
+static void z_erofs_onlinepage_end(struct page *page, int err, bool dirty)
 {
 	int orig, v;
 
@@ -152,16 +154,20 @@ static void z_erofs_onlinepage_endio(struct page *page, int err)
 
 	do {
 		orig = atomic_read((atomic_t *)&page->private);
-		v = (orig - 1) | (err ? Z_EROFS_PAGE_EIO : 0);
+		DBG_BUGON(orig <= 0);
+		v = dirty << Z_EROFS_ONLINEPAGE_DIRTY;
+		v |= (orig - 1) | (!!err << Z_EROFS_ONLINEPAGE_EIO);
 	} while (atomic_cmpxchg((atomic_t *)&page->private, orig, v) != orig);
 
-	if (!(v & ~Z_EROFS_PAGE_EIO)) {
-		set_page_private(page, 0);
-		ClearPagePrivate(page);
-		if (!(v & Z_EROFS_PAGE_EIO))
-			SetPageUptodate(page);
-		unlock_page(page);
-	}
+	if (v & (BIT(Z_EROFS_ONLINEPAGE_DIRTY) - 1))
+		return;
+	set_page_private(page, 0);
+	ClearPagePrivate(page);
+	if (v & BIT(Z_EROFS_ONLINEPAGE_DIRTY))
+		flush_dcache_page(page);
+	if (!(v & BIT(Z_EROFS_ONLINEPAGE_EIO)))
+		SetPageUptodate(page);
+	unlock_page(page);
 }
 
 #define Z_EROFS_ONSTACK_PAGES		32
@@ -925,7 +931,7 @@ static int z_erofs_do_read_page(struct z_erofs_decompress_frontend *fe,
 		goto repeat;
 
 out:
-	z_erofs_onlinepage_endio(page, err);
+	z_erofs_onlinepage_end(page, err, false);
 	return err;
 }
 
@@ -1028,7 +1034,7 @@ static void z_erofs_fill_other_copies(struct z_erofs_decompress_backend *be,
 			cur += len;
 		}
 		kunmap_local(dst);
-		z_erofs_onlinepage_endio(bvi->bvec.page, err);
+		z_erofs_onlinepage_end(bvi->bvec.page, err, true);
 		list_del(p);
 		kfree(bvi);
 	}
@@ -1196,7 +1202,7 @@ static int z_erofs_decompress_pcluster(struct z_erofs_decompress_backend *be,
 		/* recycle all individual short-lived pages */
 		if (z_erofs_put_shortlivedpage(be->pagepool, page))
 			continue;
-		z_erofs_onlinepage_endio(page, err);
+		z_erofs_onlinepage_end(page, err, true);
 	}
 
 	if (be->decompressed_pages != be->onstack_pages)
-- 
2.43.5


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry()
  2025-07-22 10:00 ` [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry() Gao Xiang
@ 2025-07-23  4:34   ` Sasha Levin
  0 siblings, 0 replies; 11+ messages in thread
From: Sasha Levin @ 2025-07-23  4:34 UTC (permalink / raw)
  To: stable; +Cc: Sasha Levin

[ Sasha's backport helper bot ]

Hi,

✅ All tests passed successfully. No issues detected.
No action required from the submitter.

The upstream commit SHA1 provided is correct: e324eaa9790614577c93e819651e0a83963dac79

Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Present (exact SHA1)

Note: The patch differs from the upstream commit:
---
1:  e324eaa97906 ! 1:  b7f6cd7d3810 erofs: get rid of debug_one_dentry()
    @@ Metadata
      ## Commit message ##
         erofs: get rid of debug_one_dentry()
     
    +    commit e324eaa9790614577c93e819651e0a83963dac79 upstream.
    +
         Since erofsdump is available, no need to keep this debugging
         functionality at all.
     

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 6.1                       | Success     | Success    |

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg()
  2025-07-22 10:00 ` [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg() Gao Xiang
@ 2025-07-23  4:34   ` Sasha Levin
  0 siblings, 0 replies; 11+ messages in thread
From: Sasha Levin @ 2025-07-23  4:34 UTC (permalink / raw)
  To: stable; +Cc: Sasha Levin

[ Sasha's backport helper bot ]

Hi,

✅ All tests passed successfully. No issues detected.
No action required from the submitter.

The upstream commit SHA1 provided is correct: 10656f9ca60ed85f4cfc06bcbe1f240ee310fa8c

Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Present (exact SHA1)

Note: The patch differs from the upstream commit:
---
1:  10656f9ca60e ! 1:  490c3ffa300c erofs: sunset erofs_dbg()
    @@ Metadata
      ## Commit message ##
         erofs: sunset erofs_dbg()
     
    +    commit 10656f9ca60ed85f4cfc06bcbe1f240ee310fa8c upstream.
    +
         Such debug messages are rarely used now.  Let's get rid of these,
         and revert locally if they are needed for debugging.
     

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 6.1                       | Success     | Success    |

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio()
  2025-07-22 10:00 ` [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio() Gao Xiang
@ 2025-07-23  4:34   ` Sasha Levin
  0 siblings, 0 replies; 11+ messages in thread
From: Sasha Levin @ 2025-07-23  4:34 UTC (permalink / raw)
  To: stable; +Cc: Sasha Levin

[ Sasha's backport helper bot ]

Hi,

✅ All tests passed successfully. No issues detected.
No action required from the submitter.

The upstream commit SHA1 provided is correct: 9a05c6a8bc26138d34e87b39e6a815603bc2a66c

Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Present (exact SHA1)

Note: Could not generate a diff with upstream commit:
---
Note: Could not generate diff - patch failed to apply for comparison
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 6.1                       | Success     | Success    |

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain()
  2025-07-22 10:00 ` [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain() Gao Xiang
@ 2025-07-23  4:34   ` Sasha Levin
  0 siblings, 0 replies; 11+ messages in thread
From: Sasha Levin @ 2025-07-23  4:34 UTC (permalink / raw)
  To: stable; +Cc: Sasha Levin

[ Sasha's backport helper bot ]

Hi,

✅ All tests passed successfully. No issues detected.
No action required from the submitter.

The upstream commit SHA1 provided is correct: c5539762f32e97c5e16215fa1336e32095b8b0fd

Status in newer kernel trees:
6.15.y | Present (exact SHA1)
6.12.y | Present (exact SHA1)
6.6.y | Present (exact SHA1)

Note: The patch differs from the upstream commit:
---
1:  c5539762f32e ! 1:  a606c7746417 erofs: simplify z_erofs_transform_plain()
    @@ Metadata
      ## Commit message ##
         erofs: simplify z_erofs_transform_plain()
     
    +    commit c5539762f32e97c5e16215fa1336e32095b8b0fd upstream.
    +
         Use memcpy_to_page() instead of open-coding them.
     
         In addition, add a missing flush_dcache_page() even though almost all

---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 6.1                       | Success     | Success    |

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH 6.1.y 5/5] erofs: address D-cache aliasing
  2025-07-22 10:00 ` [PATCH 6.1.y 5/5] erofs: address D-cache aliasing Gao Xiang
@ 2025-07-23  4:34   ` Sasha Levin
  0 siblings, 0 replies; 11+ messages in thread
From: Sasha Levin @ 2025-07-23  4:34 UTC (permalink / raw)
  To: stable; +Cc: Sasha Levin

[ Sasha's backport helper bot ]

Hi,

✅ All tests passed successfully. No issues detected.
No action required from the submitter.

The upstream commit SHA1 provided is correct: 27917e8194f91dffd8b4825350c63cb68e98ce58

Status in newer kernel trees:
6.15.y | Not found
6.12.y | Not found
6.6.y | Not found

Note: Could not generate a diff with upstream commit:
---
Note: Could not generate diff - patch failed to apply for comparison
---

Results of testing on various branches:

| Branch                    | Patch Apply | Build Test |
|---------------------------|-------------|------------|
| 6.1                       | Success     | Success    |

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2025-07-23  4:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-22 10:00 [PATCH 6.1.y 0/5] erofs: backport for `erofs: address D-cache aliasing` Gao Xiang
2025-07-22 10:00 ` [PATCH 6.1.y 1/5] erofs: get rid of debug_one_dentry() Gao Xiang
2025-07-23  4:34   ` Sasha Levin
2025-07-22 10:00 ` [PATCH 6.1.y 2/5] erofs: sunset erofs_dbg() Gao Xiang
2025-07-23  4:34   ` Sasha Levin
2025-07-22 10:00 ` [PATCH 6.1.y 3/5] erofs: drop z_erofs_page_mark_eio() Gao Xiang
2025-07-23  4:34   ` Sasha Levin
2025-07-22 10:00 ` [PATCH 6.1.y 4/5] erofs: simplify z_erofs_transform_plain() Gao Xiang
2025-07-23  4:34   ` Sasha Levin
2025-07-22 10:00 ` [PATCH 6.1.y 5/5] erofs: address D-cache aliasing Gao Xiang
2025-07-23  4:34   ` Sasha Levin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).