linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [GIT PULL] Btrfs updates for 6.18
@ 2025-09-24 14:40 David Sterba
  2025-09-29 21:35 ` Linus Torvalds
  2025-09-30 17:35 ` pr-tracker-bot
  0 siblings, 2 replies; 4+ messages in thread
From: David Sterba @ 2025-09-24 14:40 UTC (permalink / raw)
  To: torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel

Hi,

please pull the following updates for btrfs. There are no new features,
the changes are in the core code, notably tree-log error handling and
reporting improvements, and initial support for block size > page size.

(There's one build warning due to printk format mismatch reported on
i386, we'll fix it before rc1. I did not consider it serious enough to
rework and delay the whole pull request.)

Please pull, thanks.

Performance improvements:

- search data checksums in the commit root (previous transaction) to
  avoid locking contention, this improves parallelism of read heavy/low
  write workloads, and also reduces transaction commit time;
  on real and reproducer workload the sync time went from minutes to
  tens of seconds (workload and numbers are in the changelog)

Core:

- tree-log updates
  - error handling improvements, transaction aborts
  - add new error state 'O' (printed in status messages) when log replay
    fails and is aborted
  - reduced number of btrfs_path allocations when traversing the tree

- 'block size > page size' support
  - basic implementation with limitations, under experimental build
  - limitations: no direct io, raid56, encoded read (standalone and in
    send ioctl), encoded write
  - preparatory work for compression, removing implicit assumptions of
    page and block sizes
  - compression workspaces are now per-filesystem, we cannot assume
    common block size for work memory among different filesystems

- tree-checker now verifies INODE_EXTREF item (which is implementing
  hardlinks)

- tree leaf pretty printer updates, there were missing data from items,
  keys/items

- move config option CONFIG_BTRFS_REF_VERIFY to CONFIG_BTRFS_DEBUG,
  it's a debugging feature and not needed to be enabled separately

- more struct btrfs_path auto free updates

- use ref_tracker API for tracking delayed inodes, enabled by mount
  option 'ref_verify', allowing to better pinpoint leaking references

- in zoned mode, avoid selecting data relocation zoned for ordinary data
  block groups

- updated and enhanced error messages

- lots of cleanups and refactoring

----------------------------------------------------------------
The following changes since commit 07e27ad16399afcd693be20211b0dfae63e0615f:

  Linux 6.17-rc7 (2025-09-21 15:08:52 -0700)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.18-tag

for you to fetch changes up to 45c222468d33202c07c41c113301a4b9c8451b8f:

  btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot() (2025-09-23 09:02:17 +0200)

----------------------------------------------------------------
Boris Burkov (1):
      btrfs: try to search for data csums in commit root

David Sterba (5):
      btrfs: convert several int parameters to bool
      btrfs: fix typos in comments and strings
      btrfs: add unlikely annotations to branches leading to EUCLEAN
      btrfs: add unlikely annotations to branches leading to EIO
      btrfs: add unlikely annotations to branches leading to transaction abort

Filipe Manana (63):
      btrfs: abort transaction on specific error places when walking log tree
      btrfs: abort transaction in the process_one_buffer() log tree walk callback
      btrfs: use local variable for the transaction handle in replay_one_buffer()
      btrfs: return real error from read_alloc_one_name() in drop_one_dir_item()
      btrfs: abort transaction where errors happen during log tree replay
      btrfs: exit early when replaying hole file extent item from a log tree
      btrfs: process inline extent earlier in replay_one_extent()
      btrfs: use local key variable to pass arguments in replay_one_extent()
      btrfs: collapse unaccount_log_buffer() into clean_log_buffer()
      btrfs: use booleans in walk control structure for log replay
      btrfs: rename replay_dest member of struct walk_control to root
      btrfs: rename root to log in walk_down_log_tree() and walk_up_log_tree()
      btrfs: add and use a log root field to struct walk_control
      btrfs: deduplicate log root free in error paths from btrfs_recover_log_trees()
      btrfs: stop passing transaction parameter to log tree walk functions
      btrfs: stop setting log_root_tree->log_root to NULL in btrfs_recover_log_trees()
      btrfs: always drop log root tree reference in btrfs_replay_log()
      btrfs: pass walk_control structure to replay_xattr_deletes()
      btrfs: move up the definition of struct walk_control
      btrfs: pass walk_control structure to replay_dir_deletes()
      btrfs: pass walk_control structure to check_item_in_log()
      btrfs: pass walk_control structure to replay_one_extent()
      btrfs: pass walk_control structure to add_inode_ref() and helpers
      btrfs: pass walk_control structure to replay_one_dir_item() and replay_one_name()
      btrfs: pass walk_control structure to drop_one_dir_item() and helpers
      btrfs: pass walk_control structure to overwrite_item()
      btrfs: use level argument in log tree walk callback process_one_buffer()
      btrfs: use level argument in log tree walk callback replay_one_buffer()
      btrfs: use the inode item boolean everywhere in overwrite_item()
      btrfs: add current log leaf, key and slot to struct walk_control
      btrfs: avoid unnecessary path allocation at fixup_inode_link_count()
      btrfs: avoid path allocations when dropping extents during log replay
      btrfs: avoid unnecessary path allocation when replaying a dir item
      btrfs: remove redundant path release when processing dentry during log replay
      btrfs: remove redundant path release when overwriting item during log replay
      btrfs: add path for subvolume tree changes to struct walk_control
      btrfs: stop passing inode object IDs to __add_inode_ref() in log replay
      btrfs: remove pointless inode lookup when processing extrefs during log replay
      btrfs: abort transaction if we fail to find dir item during log replay
      btrfs: abort transaction if we fail to update inode in log replay dir fixup
      btrfs: dump detailed info and specific messages on log replay failures
      btrfs: send: index backref cache by node number instead of by sector number
      btrfs: print-tree: print missing fields for inode items
      btrfs: print-tree: print more information about dir items
      btrfs: print-tree: print dir items for dir index and xattr keys too
      btrfs: print-tree: print information about inode ref items
      btrfs: print-tree: print information about inode extref items
      btrfs: print-tree: print information about dir log items
      btrfs: print-tree: print range information for extent csum items
      btrfs: print-tree: print correct inline extent data size
      btrfs: print-tree: print compression type for file extent items
      btrfs: print-tree: move code for processing file extent item into helper
      btrfs: print-tree: print key types as human readable strings
      btrfs: store and use node size in local variable in check_eb_alignment()
      btrfs: mark extent buffer alignment checks as unlikely
      btrfs: mark as unlikely not uptodate extent buffer checks when navigating btrees
      btrfs: mark leaf space and overflow checks as unlikely on insert and extension
      btrfs: fix comment about nbytes increase at replay_one_extent()
      btrfs: simplify inline extent end calculation at replay_one_extent()
      btrfs: make the rule checking more readable for should_cow_block()
      btrfs: annotate btrfs_is_testing() as unlikely and make it return bool
      btrfs: remove pointless key offset setup in create_pending_snapshot()
      btrfs: use smp_mb__after_atomic() when forcing COW in create_pending_snapshot()

Jiapeng Chong (1):
      btrfs: remove duplicate inclusion of linux/types.h

Johannes Thumshirn (3):
      btrfs: zoned: directly call do_zone_finish() from btrfs_zone_finish_endio_workfn()
      btrfs: zoned: return error from btrfs_zone_finish_endio()
      btrfs: zoned: don't fail mount needlessly due to too many active zones

Leo Martins (4):
      btrfs: move ref-verify under CONFIG_BTRFS_DEBUG
      btrfs: implement ref_tracker for delayed_nodes
      btrfs: print leaked references in kill_all_delayed_nodes()
      btrfs: add mount option for ref_tracker

Miquel Sabaté Solà (1):
      btrfs: use kmalloc_array() for open-coded arithmetic in kmalloc()

Naohiro Aota (1):
      btrfs: zoned: refine extent allocator hint selection

Qu Wenruo (31):
      btrfs: replace double boolean parameters of cow_file_range()
      btrfs: pass btrfs_inode pointer directly into btrfs_compress_folios()
      btrfs: use blocksize to check if compression is making things larger
      btrfs: simplify support block size check
      btrfs: rework error handling of run_delalloc_nocow()
      btrfs: enhance error messages for delalloc range failure
      btrfs: make nocow_one_range() to do cleanup on error
      btrfs: keep folios locked inside run_delalloc_nocow()
      btrfs: add an fs_info parameter for compression workspace manager
      btrfs: add workspace manager initialization for zstd
      btrfs: add generic workspace manager initialization
      btrfs: migrate to use per-fs workspace manager
      btrfs: cleanup the per-module compression workspace managers
      btrfs: rename btrfs_compress_op to btrfs_compress_levels
      btrfs: reduce compression workspace buffer space to block size
      btrfs: support all block sizes which is no larger than page size
      btrfs: concentrate highmem handling for data verification
      btrfs: introduce btrfs_bio_for_each_block() helper
      btrfs: introduce btrfs_bio_for_each_block_all() helper
      btrfs: cache max and min order inside btrfs_fs_info
      btrfs: tree-checker: add inode extref checks
      btrfs: return any hit error from extent_writepage_io()
      btrfs: fix the incorrect max_bytes value for find_lock_delalloc_range()
      btrfs: prepare compression folio alloc/free for bs > ps cases
      btrfs: prepare zstd to support bs > ps cases
      btrfs: prepare lzo to support bs > ps cases
      btrfs: prepare zlib to support bs > ps cases
      btrfs: prepare scrub to support bs > ps cases
      btrfs: fix symbolic link reading when bs > ps
      btrfs: add extra ASSERT()s to catch unaligned bios
      btrfs: enable experimental bs > ps support

Sun YangKai (1):
      btrfs: more trivial BTRFS_PATH_AUTO_FREE conversions

Thorsten Blum (1):
      btrfs: scrub: replace max_t()/min_t() with clamp() in scrub_throttle_dev_io()

Xichao Zhao (1):
      btrfs: use PTR_ERR_OR_ZERO() to simplify code inbtrfs_control_ioctl()

 fs/btrfs/Kconfig                    |   12 +-
 fs/btrfs/Makefile                   |    2 +-
 fs/btrfs/accessors.c                |    2 +-
 fs/btrfs/backref.c                  |   26 +-
 fs/btrfs/backref.h                  |    4 +-
 fs/btrfs/bio.c                      |   54 +-
 fs/btrfs/bio.h                      |    2 +
 fs/btrfs/block-group.c              |   30 +-
 fs/btrfs/block-group.h              |    2 +-
 fs/btrfs/btrfs_inode.h              |   16 +-
 fs/btrfs/compression.c              |  243 +++--
 fs/btrfs/compression.h              |   59 +-
 fs/btrfs/ctree.c                    |  135 +--
 fs/btrfs/defrag.c                   |    4 +-
 fs/btrfs/delayed-inode.c            |  186 ++--
 fs/btrfs/delayed-inode.h            |   93 ++
 fs/btrfs/delayed-ref.c              |   13 +-
 fs/btrfs/delayed-ref.h              |    9 +-
 fs/btrfs/dev-replace.c              |   12 +-
 fs/btrfs/direct-io.c                |   12 +
 fs/btrfs/disk-io.c                  |   97 +-
 fs/btrfs/disk-io.h                  |    3 +-
 fs/btrfs/export.c                   |    2 +-
 fs/btrfs/extent-io-tree.c           |    4 +-
 fs/btrfs/extent-io-tree.h           |    2 +-
 fs/btrfs/extent-tree.c              |  104 +-
 fs/btrfs/extent-tree.h              |    7 +-
 fs/btrfs/extent_io.c                |  127 ++-
 fs/btrfs/extent_io.h                |    3 +-
 fs/btrfs/extent_map.c               |   22 +-
 fs/btrfs/fiemap.c                   |    2 +-
 fs/btrfs/file-item.c                |   60 +-
 fs/btrfs/file.c                     |   49 +-
 fs/btrfs/free-space-cache.c         |    6 +-
 fs/btrfs/free-space-tree.c          |   60 +-
 fs/btrfs/fs.c                       |   48 +
 fs/btrfs/fs.h                       |   41 +-
 fs/btrfs/inode-item.c               |   10 +-
 fs/btrfs/inode.c                    |  506 ++++-----
 fs/btrfs/ioctl.c                    |   69 +-
 fs/btrfs/locking.c                  |    2 +-
 fs/btrfs/locking.h                  |    2 +-
 fs/btrfs/lzo.c                      |   93 +-
 fs/btrfs/messages.c                 |    1 +
 fs/btrfs/messages.h                 |    1 -
 fs/btrfs/misc.h                     |   49 +
 fs/btrfs/print-tree.c               |  256 ++++-
 fs/btrfs/qgroup.c                   |   44 +-
 fs/btrfs/raid-stripe-tree.c         |   17 +-
 fs/btrfs/raid56.c                   |  121 ++-
 fs/btrfs/raid56.h                   |    4 +-
 fs/btrfs/ref-verify.c               |    3 +-
 fs/btrfs/ref-verify.h               |    4 +-
 fs/btrfs/reflink.c                  |   15 +-
 fs/btrfs/relocation.c               |   81 +-
 fs/btrfs/root-tree.c                |   66 +-
 fs/btrfs/scrub.c                    |   95 +-
 fs/btrfs/scrub.h                    |    2 +-
 fs/btrfs/send.c                     |  373 +++----
 fs/btrfs/space-info.c               |    4 +-
 fs/btrfs/subpage.c                  |    2 +-
 fs/btrfs/subpage.h                  |    2 +-
 fs/btrfs/super.c                    |   34 +-
 fs/btrfs/sysfs.c                    |   16 +-
 fs/btrfs/tests/delayed-refs-tests.c |    4 +-
 fs/btrfs/tests/extent-map-tests.c   |    2 +-
 fs/btrfs/transaction.c              |   49 +-
 fs/btrfs/tree-checker.c             |   39 +-
 fs/btrfs/tree-log.c                 | 1920 ++++++++++++++++++++---------------
 fs/btrfs/verity.c                   |    8 +-
 fs/btrfs/volumes.c                  |   70 +-
 fs/btrfs/volumes.h                  |    4 +-
 fs/btrfs/zlib.c                     |   86 +-
 fs/btrfs/zoned.c                    |   72 +-
 fs/btrfs/zoned.h                    |    9 +-
 fs/btrfs/zstd.c                     |  198 ++--
 76 files changed, 3441 insertions(+), 2445 deletions(-)

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

* Re: [GIT PULL] Btrfs updates for 6.18
  2025-09-24 14:40 [GIT PULL] Btrfs updates for 6.18 David Sterba
@ 2025-09-29 21:35 ` Linus Torvalds
  2025-09-30 13:04   ` David Sterba
  2025-09-30 17:35 ` pr-tracker-bot
  1 sibling, 1 reply; 4+ messages in thread
From: Linus Torvalds @ 2025-09-29 21:35 UTC (permalink / raw)
  To: David Sterba; +Cc: linux-btrfs, linux-kernel

On Wed, 24 Sept 2025 at 07:41, David Sterba <dsterba@suse.com> wrote:
>
>   git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.18-tag
>
> for you to fetch changes up to 45c222468d33202c07c41c113301a4b9c8451b8f:

I see the for-6.18 branch, and it matches that commit, but no for-6.8-tag.

I suspect you just forgot to push that one out,

            Linus

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

* Re: [GIT PULL] Btrfs updates for 6.18
  2025-09-29 21:35 ` Linus Torvalds
@ 2025-09-30 13:04   ` David Sterba
  0 siblings, 0 replies; 4+ messages in thread
From: David Sterba @ 2025-09-30 13:04 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel

On Mon, Sep 29, 2025 at 02:35:20PM -0700, Linus Torvalds wrote:
> On Wed, 24 Sept 2025 at 07:41, David Sterba <dsterba@suse.com> wrote:
> >
> >   git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.18-tag
> >
> > for you to fetch changes up to 45c222468d33202c07c41c113301a4b9c8451b8f:
> 
> I see the for-6.18 branch, and it matches that commit, but no for-6.8-tag.
> 
> I suspect you just forgot to push that one out,

Ah yes, sorry, now pushed.

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

* Re: [GIT PULL] Btrfs updates for 6.18
  2025-09-24 14:40 [GIT PULL] Btrfs updates for 6.18 David Sterba
  2025-09-29 21:35 ` Linus Torvalds
@ 2025-09-30 17:35 ` pr-tracker-bot
  1 sibling, 0 replies; 4+ messages in thread
From: pr-tracker-bot @ 2025-09-30 17:35 UTC (permalink / raw)
  To: David Sterba; +Cc: torvalds, David Sterba, linux-btrfs, linux-kernel

The pull request you sent on Wed, 24 Sep 2025 16:40:54 +0200:

> git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.18-tag

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

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

end of thread, other threads:[~2025-09-30 17:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-09-24 14:40 [GIT PULL] Btrfs updates for 6.18 David Sterba
2025-09-29 21:35 ` Linus Torvalds
2025-09-30 13:04   ` David Sterba
2025-09-30 17:35 ` 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;
as well as URLs for NNTP newsgroup(s).