This is a note to let you know that I've just added the patch titled
erofs: drop z_erofs_page_mark_eio() to the 6.1-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: erofs-drop-z_erofs_page_mark_eio.patch and it can be found in the queue-6.1 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <sta...@vger.kernel.org> know about it. >From hsiang...@linux.alibaba.com Tue Jul 22 12:00:46 2025 From: Gao Xiang <hsiang...@linux.alibaba.com> Date: Tue, 22 Jul 2025 18:00:27 +0800 Subject: erofs: drop z_erofs_page_mark_eio() To: sta...@vger.kernel.org, Greg Kroah-Hartman <gre...@linuxfoundation.org>, Jan Kiszka <jan.kis...@siemens.com>, Stefan Kerkmann <s.kerkm...@pengutronix.de> Cc: linux-erofs@lists.ozlabs.org, LKML <linux-ker...@vger.kernel.org>, Gao Xiang <hsiang...@linux.alibaba.com>, Yue Hu <huy...@coolpad.com>, Chao Yu <c...@kernel.org> Message-ID: <20250722100029.3052177-4-hsiang...@linux.alibaba.com> From: Gao Xiang <hsiang...@linux.alibaba.com> commit 9a05c6a8bc26138d34e87b39e6a815603bc2a66c upstream. It can be folded into z_erofs_onlinepage_endio() to simplify the code. Reviewed-by: Yue Hu <huy...@coolpad.com> Reviewed-by: Chao Yu <c...@kernel.org> Signed-off-by: Gao Xiang <hsiang...@linux.alibaba.com> Link: https://lore.kernel.org/r/20230817082813.81180-5-hsiang...@linux.alibaba.com Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> --- fs/erofs/zdata.c | 29 +++++++++-------------------- 1 file changed, 9 insertions(+), 20 deletions(-) --- a/fs/erofs/zdata.c +++ b/fs/erofs/zdata.c @@ -144,22 +144,17 @@ static inline void z_erofs_onlinepage_sp 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 @@ next_part: 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(st 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 @@ out: /* 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) Patches currently in stable-queue which might be from hsiang...@linux.alibaba.com are queue-6.1/erofs-sunset-erofs_dbg.patch queue-6.1/erofs-simplify-z_erofs_transform_plain.patch queue-6.1/erofs-get-rid-of-debug_one_dentry.patch queue-6.1/erofs-drop-z_erofs_page_mark_eio.patch queue-6.1/erofs-address-d-cache-aliasing.patch