public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] f2fs update for 7.0-rc1
@ 2026-02-14  2:45 Jaegeuk Kim
  2026-02-14 17:50 ` Linus Torvalds
  2026-02-14 17:52 ` [f2fs-dev] " pr-tracker-bot
  0 siblings, 2 replies; 4+ messages in thread
From: Jaegeuk Kim @ 2026-02-14  2:45 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Linux Kernel Mailing List, Linux F2FS Dev Mailing List

Hi Linus,

Could you please consider this pull request?

Thanks,

The following changes since commit 8f0b4cce4481fb22653697cced8d0d04027cb1e8:

  Linux 6.19-rc1 (2025-12-14 16:05:07 +1200)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-7.0-rc1

for you to fetch changes up to 52190933c37a96164b271f3f30c16099d9eb8c09:

  f2fs: sysfs: introduce critical_task_priority (2026-02-10 20:53:21 +0000)

----------------------------------------------------------------
f2fs-for-7.0-rc1

In this development cycle, we focused on several key performance optimizations:
1) introducing large folio support to enhance read speeds for immutable files,
2) reducing checkpoint=enable latency by flushing only committed dirty pages,
and 3) implementing tracepoints to diagnose and resolve lock priority inversion.
Additionally, we introduced the packed_ssa feature to optimize the SSA footprint
when utilizing large block sizes.

Enhancement:
 - support large folio for immutable non-compressed case
 - support non-4KB block size without packed_ssa feature
 - optimize f2fs_enable_checkpoint() to avoid long delay
 - optimize f2fs_overwrite_io() for f2fs_iomap_begin
 - optimize NAT block loading during checkpoint write
 - add write latency stats for NAT and SIT blocks in f2fs_write_checkpoint
 - pin files do not require sbi->writepages lock for ordering
 - avoid f2fs_map_blocks() for consecutive holes in readpages
 - flush plug periodically during GC to maximize readahead effect
 - add tracepoints to catch lock overheads
 - add several sysfs entries to tune internal lock priorities

Bug fix:
 - fix lock priority inversion issue
 - fix incomplete block usage in compact SSA summaries
 - fix to show simulate_lock_timeout correctly
 - fix to avoid mapping wrong physical block for swapfile
 - fix IS_CHECKPOINTED flag inconsistency issue caused by concurrent atomic
   commit and checkpoint writes
 - fix to avoid UAF in f2fs_write_end_io()

----------------------------------------------------------------
Chao Yu (33):
      f2fs: fix to do sanity check on nat entry of quota inode
      f2fs: add lock elapsed time trace facility for f2fs rwsemphore
      f2fs: sysfs: introduce max_lock_elapsed_time
      f2fs: trace elapsed time for cp_rwsem lock
      f2fs: trace elapsed time for node_change lock
      f2fs: trace elapsed time for node_write lock
      f2fs: trace elapsed time for gc_lock lock
      f2fs: trace elapsed time for cp_global_sem lock
      f2fs: trace elapsed time for io_rwsem lock
      f2fs: clean up w/ __f2fs_schedule_timeout()
      f2fs: fix to use jiffies based precision for DEFAULT_SCHEDULE_TIMEOUT
      f2fs: fix timeout precision of f2fs_io_schedule_timeout_killable()
      f2fs: rename FAULT_TIMEOUT to FAULT_ATOMIC_TIMEOUT
      f2fs: introduce FAULT_LOCK_TIMEOUT
      f2fs: sysfs: introduce inject_lock_timeout
      f2fs: fix to check sysfs filename w/ gc_pin_file_thresh correctly
      Revert "f2fs: block cache/dio write during f2fs_enable_checkpoint()"
      f2fs: fix to avoid UAF in f2fs_write_end_io()
      f2fs: make FAULT_DISCARD obsolete
      f2fs: fix to do sanity check on node footer in __write_node_folio()
      f2fs: fix to do sanity check on node footer in {read,write}_end_io
      f2fs: detect more inconsistent cases in sanity_check_node_footer()
      f2fs: avoid f2fs_map_blocks() for consecutive holes in readpages
      f2fs: fix to avoid mapping wrong physical block for swapfile
      f2fs: fix error path handling in f2fs_read_data_large_folio()
      f2fs: fix to unlock folio in f2fs_read_data_large_folio()
      f2fs: check skipped write in f2fs_enable_checkpoint()
      f2fs: introduce FAULT_SKIP_WRITE
      f2fs: fix to show simulate_lock_timeout correctly
      f2fs: decrease maximum flush retry count in f2fs_enable_checkpoint()
      f2fs: fix lock priority inversion issue
      f2fs: introduce trace_f2fs_priority_update
      f2fs: sysfs: introduce critical_task_priority

Daeho Jeong (3):
      f2fs: flush plug periodically during GC to maximize readahead effect
      f2fs: support non-4KB block size without packed_ssa feature
      f2fs: fix incomplete block usage in compact SSA summaries

Jaegeuk Kim (4):
      f2fs: support large folio for immutable non-compressed case
      f2fs: add a tracepoint to see large folio read submission
      f2fs: use folio_end_read
      Revert "f2fs: add timeout in f2fs_enable_checkpoint()"

Joanne Chang (1):
      f2fs: improve check for enough free sections

Nanzhe Zhao (4):
      f2fs: Zero f2fs_folio_state on allocation
      f2fs: Accounting large folio subpages before bio submission
      f2fs: add 'folio_in_bio' to handle readahead folios with no BIO submission
      f2fs: advance index and offset after zeroing in large folio read

Yangyang Zang (1):
      f2fs: clean up the type parameter in f2fs_sync_meta_pages()

Yeongjin Gil (1):
      f2fs: optimize f2fs_overwrite_io() for f2fs_iomap_begin

Yongpeng Yang (11):
      f2fs: clean up the force parameter in __submit_merged_write_cond()
      f2fs: return immediately after submitting the specified folio in __submit_merged_write_cond
      f2fs: remove non-uptodate folio from the page cache in move_data_block
      f2fs: fix out-of-bounds access in sysfs attribute read/write
      f2fs: change seq_file_ra_mul and max_io_bytes to unsigned int
      f2fs: fix IS_CHECKPOINTED flag inconsistency issue caused by concurrent atomic commit and checkpoint writes
      f2fs: avoid unnecessary block mapping lookups in f2fs_read_data_large_folio
      f2fs: pin files do not require sbi->writepages lock for ordering
      f2fs: add write latency stats for NAT and SIT blocks in f2fs_write_checkpoint
      f2fs: change size parameter of __has_cursum_space() to unsigned int
      f2fs: optimize NAT block loading during checkpoint write

ZhaoYueNan (1):
      f2fs: Update the default value of the documentation ckpt_thread_ioprio

Zhiguo Niu (2):
      f2fs: remove some redundant codes in f2fs_quota_enable
      f2fs: fix to add gc count stat in f2fs_gc_range

 Documentation/ABI/testing/sysfs-fs-f2fs |  62 ++++-
 Documentation/filesystems/f2fs.rst      |  49 +++-
 fs/f2fs/checkpoint.c                    | 247 ++++++++++++++++--
 fs/f2fs/compress.c                      |  18 +-
 fs/f2fs/data.c                          | 436 +++++++++++++++++++++++++++-----
 fs/f2fs/debug.c                         |   1 +
 fs/f2fs/f2fs.h                          | 251 +++++++++++++-----
 fs/f2fs/file.c                          |  84 +++---
 fs/f2fs/gc.c                            |  86 ++++---
 fs/f2fs/inline.c                        |  10 +-
 fs/f2fs/inode.c                         |  16 +-
 fs/f2fs/namei.c                         |  65 +++--
 fs/f2fs/node.c                          |  99 ++++++--
 fs/f2fs/node.h                          |   8 -
 fs/f2fs/recovery.c                      |  11 +-
 fs/f2fs/segment.c                       | 133 +++++-----
 fs/f2fs/segment.h                       | 108 ++++----
 fs/f2fs/super.c                         | 202 +++++++++------
 fs/f2fs/sysfs.c                         | 111 +++++++-
 fs/f2fs/xattr.c                         |   5 +-
 include/linux/f2fs_fs.h                 |  73 ++++--
 include/trace/events/f2fs.h             | 142 ++++++++++-
 22 files changed, 1671 insertions(+), 546 deletions(-)

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

* Re: [GIT PULL] f2fs update for 7.0-rc1
  2026-02-14  2:45 [GIT PULL] f2fs update for 7.0-rc1 Jaegeuk Kim
@ 2026-02-14 17:50 ` Linus Torvalds
  2026-02-14 18:11   ` Eric Biggers
  2026-02-14 17:52 ` [f2fs-dev] " pr-tracker-bot
  1 sibling, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2026-02-14 17:50 UTC (permalink / raw)
  To: Jaegeuk Kim, Eric Biggers, Theodore Ts'o
  Cc: Linux Kernel Mailing List, Linux F2FS Dev Mailing List

[ Note: added fsverity people ]

On Fri, 13 Feb 2026 at 18:45, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-7.0-rc1

So I have pulled this, but as part of going over my conflict
resolution with the fsverity changes, I'm a bit unhappy.

I'm not unhappy about the f2fs thing in particular - I'm unhappy about
the fsverity integration side.

In particular, f2fs uses fsverity_verify_page() by doing

    fsverity_verify_page(folio_file_page(folio,index))

which looks fine, and now wants that

    struct fsverity_info *vi

and that was part of my conflict resolution.

But then I looked at what fsverity_verify_page() does, and that is just broken.

Because fsverity_verify_page() looks like this:

        return fsverity_verify_blocks(vi, page_folio(page), PAGE_SIZE, 0);

and that's garbage.

We just turned the folio into a page, and now it turns it back into a
folio - but importantly it *loses* the index of the page inside the
folio while doing so!

In other words, fsverity_verify_page() does *not* work on large
folios. It only works when a folio is a page.

And I can't just use "fsverity_verify_folio()", because that verifies
the *whole* folio, not just the sub-page.

So my resolution was to just fix this thing and make it use
!fsverity_verify_blocks() directly, using the page offset within a
folio explicitly.

But I don't actually *really* know this code at all, and I can't
verify my resolution, and I'm unhappy with how subtle that
fsverity_verify_page() thing is.

I was initially going to just fix fsverity_verify_page() to actually
take the page offset into account properly, but it turns out that
there aren't very many other users.

Anyway, I *think* fsverity_verify_page() should be either fixed or
removed. The fix would be something like this:

-       return fsverity_verify_blocks(vi, page_folio(page), PAGE_SIZE, 0);
+       struct folio *folio = page_folio(page);
+       unsigned int offset = folio_page_idx(folio, page) * PAGE_SIZE;
+       return fsverity_verify_blocks(vi, folio, PAGE_SIZE, offset);

but I didn't do that. Instead I did a hack-job in fs/f2fs/data.c,
which also involved changing a

    fsverity_verify_page(vi, &folio->page)

into a

    fsverity_verify_folio(vi, folio)

instead, because it really looked to me like it should be the whole
folio regardless of whether it was a large folio (broken before) or
not (working if so).

It's entirely possible that this code only deals with small page-sized
folios, in which case it doesn't matter. But that
f2fs_read_data_large_folio() code is definitely about multi-page
folios.

There's another fsverity_verify_page() use in fs/f2fs/compress.c. and
I didn't touch that one. The code doesn't use folios at all, so maybe
it only triggers for page == folio. I don't know, and that's when I
just started going "Somebody who knows this code needs to fix this".

Anyway, I think that fsverity_verify_page() case should be removed
too, and then the subtly broken function can just be deleted entirely
instead of being fixed.

Comments? Did I mess something up? Am I just being confused?

Regardless, please verify my merge resolution, and please do
*something* about that fsverity_verify_page() situation.

            Linus

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

* Re: [f2fs-dev] [GIT PULL] f2fs update for 7.0-rc1
  2026-02-14  2:45 [GIT PULL] f2fs update for 7.0-rc1 Jaegeuk Kim
  2026-02-14 17:50 ` Linus Torvalds
@ 2026-02-14 17:52 ` pr-tracker-bot
  1 sibling, 0 replies; 4+ messages in thread
From: pr-tracker-bot @ 2026-02-14 17:52 UTC (permalink / raw)
  To: Jaegeuk Kim via Linux-f2fs-devel
  Cc: Linus Torvalds, Linux Kernel Mailing List,
	Linux F2FS Dev Mailing List

The pull request you sent on Sat, 14 Feb 2026 02:45:41 +0000:

> git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-7.0-rc1

has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/3e48a11675c50698374d4ac596fb506736eb1c53

Thank you!

-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html

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

* Re: [GIT PULL] f2fs update for 7.0-rc1
  2026-02-14 17:50 ` Linus Torvalds
@ 2026-02-14 18:11   ` Eric Biggers
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Biggers @ 2026-02-14 18:11 UTC (permalink / raw)
  To: Linus Torvalds
  Cc: Jaegeuk Kim, Theodore Ts'o, Linux Kernel Mailing List,
	Linux F2FS Dev Mailing List

On Sat, Feb 14, 2026 at 09:50:42AM -0800, Linus Torvalds wrote:
> [ Note: added fsverity people ]
> 
> On Fri, 13 Feb 2026 at 18:45, Jaegeuk Kim <jaegeuk@kernel.org> wrote:
> >
> >   git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git tags/f2fs-for-7.0-rc1
> 
> So I have pulled this, but as part of going over my conflict
> resolution with the fsverity changes, I'm a bit unhappy.
> 
> I'm not unhappy about the f2fs thing in particular - I'm unhappy about
> the fsverity integration side.
> 
> In particular, f2fs uses fsverity_verify_page() by doing
> 
>     fsverity_verify_page(folio_file_page(folio,index))
> 
> which looks fine, and now wants that
> 
>     struct fsverity_info *vi
> 
> and that was part of my conflict resolution.
> 
> But then I looked at what fsverity_verify_page() does, and that is just broken.
> 
> Because fsverity_verify_page() looks like this:
> 
>         return fsverity_verify_blocks(vi, page_folio(page), PAGE_SIZE, 0);
> 
> and that's garbage.
> 
> We just turned the folio into a page, and now it turns it back into a
> folio - but importantly it *loses* the index of the page inside the
> folio while doing so!
> 
> In other words, fsverity_verify_page() does *not* work on large
> folios. It only works when a folio is a page.
> 
> And I can't just use "fsverity_verify_folio()", because that verifies
> the *whole* folio, not just the sub-page.
> 
> So my resolution was to just fix this thing and make it use
> !fsverity_verify_blocks() directly, using the page offset within a
> folio explicitly.
> 
> But I don't actually *really* know this code at all, and I can't
> verify my resolution, and I'm unhappy with how subtle that
> fsverity_verify_page() thing is.
> 
> I was initially going to just fix fsverity_verify_page() to actually
> take the page offset into account properly, but it turns out that
> there aren't very many other users.
> 
> Anyway, I *think* fsverity_verify_page() should be either fixed or
> removed. The fix would be something like this:
> 
> -       return fsverity_verify_blocks(vi, page_folio(page), PAGE_SIZE, 0);
> +       struct folio *folio = page_folio(page);
> +       unsigned int offset = folio_page_idx(folio, page) * PAGE_SIZE;
> +       return fsverity_verify_blocks(vi, folio, PAGE_SIZE, offset);
> 
> but I didn't do that. Instead I did a hack-job in fs/f2fs/data.c,
> which also involved changing a
> 
>     fsverity_verify_page(vi, &folio->page)
> 
> into a
> 
>     fsverity_verify_folio(vi, folio)
> 
> instead, because it really looked to me like it should be the whole
> folio regardless of whether it was a large folio (broken before) or
> not (working if so).
> 
> It's entirely possible that this code only deals with small page-sized
> folios, in which case it doesn't matter. But that
> f2fs_read_data_large_folio() code is definitely about multi-page
> folios.
> 
> There's another fsverity_verify_page() use in fs/f2fs/compress.c. and
> I didn't touch that one. The code doesn't use folios at all, so maybe
> it only triggers for page == folio. I don't know, and that's when I
> just started going "Somebody who knows this code needs to fix this".
> 
> Anyway, I think that fsverity_verify_page() case should be removed
> too, and then the subtly broken function can just be deleted entirely
> instead of being fixed.
> 
> Comments? Did I mess something up? Am I just being confused?
> 
> Regardless, please verify my merge resolution, and please do
> *something* about that fsverity_verify_page() situation.

Your merge resolution looks good.  Thanks for catching this.

The history behind this is that fsverity_verify_page() came first,
before folios existed.  The functions that take a folio,
fsverity_verify_blocks() and fsverity_verify_folio(), were added later.
fsverity_verify_page() was kept around for compatibility with the
existing callers in ext4, f2fs, and btrfs.  It wasn't updated to take
the index of the page in its containing folio into account, as it was
intended for the existing non-large-folio-aware callers.

But now that only one caller of fsverity_verify_page() is left (the one
in f2fs_verify_cluster()), we should indeed convert that to use
fsverity_verify_blocks() and remove fsverity_verify_page().  I'll plan
to do that through the fsverity tree soon, if that's okay with the f2fs
folks.

- Eric

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

end of thread, other threads:[~2026-02-14 18:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-14  2:45 [GIT PULL] f2fs update for 7.0-rc1 Jaegeuk Kim
2026-02-14 17:50 ` Linus Torvalds
2026-02-14 18:11   ` Eric Biggers
2026-02-14 17:52 ` [f2fs-dev] " pr-tracker-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox