From: Gao Xiang <hsiangkao@linux.alibaba.com>
To: jiucheng.xu@amlogic.com, Gao Xiang <xiang@kernel.org>,
Chao Yu <chao@kernel.org>, Yue Hu <zbestahu@gmail.com>,
Jeffle Xu <jefflexu@linux.alibaba.com>,
Sandeep Dhavale <dhavale@google.com>,
Hongbo Li <lihongbo22@huawei.com>,
Chunhai Guo <guochunhai@vivo.com>
Cc: linux-erofs@lists.ozlabs.org, linux-kernel@vger.kernel.org,
jianxin.pan@amlogic.com, tuan.zhang@amlogic.com
Subject: Re: [PATCH] erofs: use GFP_NOIO in endio decompression path of erofs
Date: Wed, 11 Mar 2026 15:46:29 +0800 [thread overview]
Message-ID: <e6b6effb-10fe-407e-9d81-e9d439d51533@linux.alibaba.com> (raw)
In-Reply-To: <20260311-origin-dev-v1-1-40524ef07ff0@amlogic.com>
Hi Jiucheng,
On 2026/3/11 15:22, Jiucheng Xu via B4 Relay wrote:
> From: Jiucheng Xu <jiucheng.xu@amlogic.com>
>
> The endio decompression path of erofs calls vm_map_ram(). Due to
updated subject:
erofs: add GFP_NOIO in the bio completion if needed
The bio completion path in the process context (e.g. dm-verity)
will directly call into decompression rather than trigger another
workqueue context for minimal scheduling latencies, which can
then call vm_map_ram() with GFP_KERNEL.
Due to insufficient memory, ...
> insufficient memory, this function may generate memory swapping I/O,
> which can cause submit_bio_wait to deadlock in some scenarios.
>
> Trimmed down the call stack, as follows:
>
> f2fs_submit_read_io
> submit_bio //bio_list is initialized.
> mmc_blk_mq_recovery
> z_erofs_endio
> vm_map_ram
> __pte_alloc_kernel
> __alloc_pages_direct_reclaim
> shrink_folio_list
> __swap_writepage
> submit_bio_wait //bio_list is non-NULL, hang!!!
>
> Use memalloc_noio_{save,restore}() to wrap up this path.
>
> Signed-off-by: Jiucheng Xu <jiucheng.xu@amlogic.com>
Reviewed-by: Gao Xiang <hsiangkao@linux.alibaba.com>
You can send a v2 to refine the subject and commit message.
Thanks,
Gao Xiang
> ---
> fs/erofs/zdata.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/fs/erofs/zdata.c b/fs/erofs/zdata.c
> index 3977e42b9516861bf3d59c072b6b8aaa6898dd8a..fe8121df9ef2f2404fc6e3f0fbbd6367f9ec2c67 100644
> --- a/fs/erofs/zdata.c
> +++ b/fs/erofs/zdata.c
> @@ -1445,6 +1445,7 @@ static void z_erofs_decompress_kickoff(struct z_erofs_decompressqueue *io,
> int bios)
> {
> struct erofs_sb_info *const sbi = EROFS_SB(io->sb);
> + int gfp_flag;
>
> /* wake up the caller thread for sync decompression */
> if (io->sync) {
> @@ -1477,7 +1478,9 @@ static void z_erofs_decompress_kickoff(struct z_erofs_decompressqueue *io,
> sbi->sync_decompress = EROFS_SYNC_DECOMPRESS_FORCE_ON;
> return;
> }
> + gfp_flag = memalloc_noio_save();
> z_erofs_decompressqueue_work(&io->u.work);
> + memalloc_noio_restore(gfp_flag);
> }
>
> static void z_erofs_fill_bio_vec(struct bio_vec *bvec,
>
> ---
> base-commit: 11439c4635edd669ae435eec308f4ab8a0804808
> change-id: 20260311-origin-dev-1c9665798204
>
> Best regards,
prev parent reply other threads:[~2026-03-11 7:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-11 7:22 [PATCH] erofs: use GFP_NOIO in endio decompression path of erofs Jiucheng Xu
2026-03-11 7:22 ` Jiucheng Xu via B4 Relay
2026-03-11 7:46 ` Gao Xiang [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=e6b6effb-10fe-407e-9d81-e9d439d51533@linux.alibaba.com \
--to=hsiangkao@linux.alibaba.com \
--cc=chao@kernel.org \
--cc=dhavale@google.com \
--cc=guochunhai@vivo.com \
--cc=jefflexu@linux.alibaba.com \
--cc=jianxin.pan@amlogic.com \
--cc=jiucheng.xu@amlogic.com \
--cc=lihongbo22@huawei.com \
--cc=linux-erofs@lists.ozlabs.org \
--cc=linux-kernel@vger.kernel.org \
--cc=tuan.zhang@amlogic.com \
--cc=xiang@kernel.org \
--cc=zbestahu@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.