From: Jaegeuk Kim via Linux-f2fs-devel <linux-f2fs-devel@lists.sourceforge.net>
To: Nanzhe Zhao <nzzhao@126.com>
Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH v1 0/5] f2fs: fix large folio read corner cases for immutable files
Date: Wed, 7 Jan 2026 03:08:50 +0000 [thread overview]
Message-ID: <aV3OQu3ea5-DgzmT@google.com> (raw)
In-Reply-To: <20260105153101.152892-1-nzzhao@126.com>
Hi Nanzhe,
fyi - I applied the beginning two patches first.
Thanks,
On 01/05, Nanzhe Zhao wrote:
> When reading immutable, non-compressed files with large folios enabled,
> I was able to reproduce readahead hangs while reading sparse files with
> holes and heavily fragmented files. The problems were caused by a few
> corner cases in the large-folio read loop:
>
> - f2fs_folio_state could be observed with uninitialized field
> read_pages_pending
> - subpage accounting could become inconsistent with BIO completion,
> leading to folios being prematurely unlocked/marked uptodate.
> - NULL_ADDR/NEW_ADDR blocks can carry F2FS_MAP_MAPPED, causing the
> large-folio read path to treat hole blocks as mapped and to account
> them in read_pages_pending.
> - in readahead, a folio that never had any subpage queued to a BIO
> would not be seen by f2fs_finish_read_bio(), leaving it locked.
> - the zeroing path did not advance index/offset before continuing.
>
> This patch series fixes the above issues in f2fs_read_data_large_folio()
> introduced by commit 05e65c14ea59 ("f2fs: support large folio for
> immutable non-compressed case").
>
> Testing
> -------
>
> All patches pass scripts/checkpatch.pl.
>
> I tested the basic large-folio immutable read case described in the
> original thread (create a large file, set immutable, drop caches to
> reload the inode, then read it), and additionally verified:
>
> - sparse file
> - heavily fragmented file
>
> In all cases, reads completed without hangs and data was verified against
> the expected contents.
>
> Nanzhe Zhao (5):
> f2fs: Zero f2fs_folio_state on allocation
> f2fs: Accounting large folio subpages before bio submission
> f2fs: add f2fs_block_needs_zeroing() to handle hole blocks
> f2fs: add 'folio_in_bio' to handle readahead folios with no BIO
> submission
> f2fs: advance index and offset after zeroing in large folio read
>
> fs/f2fs/data.c | 54 +++++++++++++++++++++++++++++++++-----------------
> 1 file changed, 36 insertions(+), 18 deletions(-)
>
>
> base-commit: 48b5439e04ddf4508ecaf588219012dc81d947c0
> --
> 2.34.1
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Nanzhe Zhao <nzzhao@126.com>
Cc: Chao Yu <chao@kernel.org>,
linux-f2fs-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v1 0/5] f2fs: fix large folio read corner cases for immutable files
Date: Wed, 7 Jan 2026 03:08:50 +0000 [thread overview]
Message-ID: <aV3OQu3ea5-DgzmT@google.com> (raw)
In-Reply-To: <20260105153101.152892-1-nzzhao@126.com>
Hi Nanzhe,
fyi - I applied the beginning two patches first.
Thanks,
On 01/05, Nanzhe Zhao wrote:
> When reading immutable, non-compressed files with large folios enabled,
> I was able to reproduce readahead hangs while reading sparse files with
> holes and heavily fragmented files. The problems were caused by a few
> corner cases in the large-folio read loop:
>
> - f2fs_folio_state could be observed with uninitialized field
> read_pages_pending
> - subpage accounting could become inconsistent with BIO completion,
> leading to folios being prematurely unlocked/marked uptodate.
> - NULL_ADDR/NEW_ADDR blocks can carry F2FS_MAP_MAPPED, causing the
> large-folio read path to treat hole blocks as mapped and to account
> them in read_pages_pending.
> - in readahead, a folio that never had any subpage queued to a BIO
> would not be seen by f2fs_finish_read_bio(), leaving it locked.
> - the zeroing path did not advance index/offset before continuing.
>
> This patch series fixes the above issues in f2fs_read_data_large_folio()
> introduced by commit 05e65c14ea59 ("f2fs: support large folio for
> immutable non-compressed case").
>
> Testing
> -------
>
> All patches pass scripts/checkpatch.pl.
>
> I tested the basic large-folio immutable read case described in the
> original thread (create a large file, set immutable, drop caches to
> reload the inode, then read it), and additionally verified:
>
> - sparse file
> - heavily fragmented file
>
> In all cases, reads completed without hangs and data was verified against
> the expected contents.
>
> Nanzhe Zhao (5):
> f2fs: Zero f2fs_folio_state on allocation
> f2fs: Accounting large folio subpages before bio submission
> f2fs: add f2fs_block_needs_zeroing() to handle hole blocks
> f2fs: add 'folio_in_bio' to handle readahead folios with no BIO
> submission
> f2fs: advance index and offset after zeroing in large folio read
>
> fs/f2fs/data.c | 54 +++++++++++++++++++++++++++++++++-----------------
> 1 file changed, 36 insertions(+), 18 deletions(-)
>
>
> base-commit: 48b5439e04ddf4508ecaf588219012dc81d947c0
> --
> 2.34.1
next prev parent reply other threads:[~2026-01-07 3:09 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-05 15:30 [f2fs-dev] [PATCH v1 0/5] f2fs: fix large folio read corner cases for immutable files Nanzhe Zhao
2026-01-05 15:30 ` Nanzhe Zhao
2026-01-05 15:30 ` [f2fs-dev] [PATCH v1 1/5] f2fs: Zero f2fs_folio_state on allocation Nanzhe Zhao
2026-01-05 15:30 ` Nanzhe Zhao
2026-01-06 3:38 ` [f2fs-dev] " Barry Song
2026-01-06 3:38 ` Barry Song
2026-01-07 3:44 ` [f2fs-dev] " Nanzhe Zhao
2026-01-07 3:44 ` Nanzhe Zhao
2026-01-08 22:35 ` [f2fs-dev] " Barry Song
2026-01-08 22:35 ` Barry Song
2026-01-06 9:16 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-06 9:16 ` Chao Yu
2026-01-05 15:30 ` [f2fs-dev] [PATCH v1 2/5] f2fs: Accounting large folio subpages before bio submission Nanzhe Zhao
2026-01-05 15:30 ` Nanzhe Zhao
2026-01-06 9:16 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-06 9:16 ` Chao Yu
2026-01-05 15:30 ` [f2fs-dev] [PATCH v1 3/5] f2fs: add f2fs_block_needs_zeroing() to handle hole blocks Nanzhe Zhao
2026-01-05 15:30 ` Nanzhe Zhao
2026-01-06 9:19 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-06 9:19 ` Chao Yu
2026-01-06 11:25 ` [f2fs-dev] " Nanzhe Zhao
2026-01-06 11:25 ` Nanzhe Zhao
2026-01-06 9:30 ` [f2fs-dev] " kernel test robot
2026-01-06 9:30 ` kernel test robot
2026-01-05 15:31 ` [f2fs-dev] [PATCH v1 4/5] f2fs: add 'folio_in_bio' to handle readahead folios with no BIO submission Nanzhe Zhao
2026-01-05 15:31 ` Nanzhe Zhao
2026-01-06 9:31 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-06 9:31 ` Chao Yu
2026-01-07 0:33 ` [f2fs-dev] " Nanzhe Zhao
2026-01-07 0:33 ` Nanzhe Zhao
2026-01-07 1:16 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-07 1:16 ` Chao Yu
2026-01-05 15:31 ` [f2fs-dev] [PATCH v1 5/5] f2fs: advance index and offset after zeroing in large folio read Nanzhe Zhao
2026-01-05 15:31 ` Nanzhe Zhao
2026-01-06 9:35 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-06 9:35 ` Chao Yu
2026-01-07 3:08 ` Jaegeuk Kim via Linux-f2fs-devel [this message]
2026-01-07 3:08 ` [PATCH v1 0/5] f2fs: fix large folio read corner cases for immutable files Jaegeuk Kim
2026-01-08 2:17 ` [f2fs-dev] " Nanzhe Zhao
2026-01-08 2:17 ` Nanzhe Zhao
2026-01-08 9:23 ` [f2fs-dev] " Chao Yu via Linux-f2fs-devel
2026-01-08 9:23 ` Chao Yu
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=aV3OQu3ea5-DgzmT@google.com \
--to=linux-f2fs-devel@lists.sourceforge.net \
--cc=jaegeuk@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=nzzhao@126.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.