From: David Sterba <dsterba@suse.com>
To: torvalds@linux-foundation.org
Cc: David Sterba <dsterba@suse.com>,
linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [GIT PULL] Btrfs updates for 7.2
Date: Mon, 15 Jun 2026 23:29:11 +0200 [thread overview]
Message-ID: <cover.1781558337.git.dsterba@suse.com> (raw)
Hi,
please pull the following updates. The noticeable change is to enable
large folios by default, it's been in testing for a few releases.
Related to that is huge folio support (still under experimental config).
Otherwise a few ioctl updates, performance improvements and usual fixes
and core changes.
Thanks.
User visible changes:
- enable large folios by default, added in 6.17 (under experimental
build), no feature limitations, a big change internally
- new ioctl to return raw checksums to userspace (a bit tricky given
compression and tail extents), can be used for mkfs and deduplication
optimizations
- provide stable UUID for e.g. overlayfs and temp_fsid, also reflected
in statvfs() field f_fsid, internal dev_t is hashed in to allow
cloning
- add 32bit compat version of GET_SUBVOL_INFO ioctl
- in experimental build, support huge folios (up to 2M)
Performance related improvements/changes:
- limit bio size to the estimated optimum derived from the queue, this
prevents build up of too much data for writeback, which could cause
latency spikes (reported improvement 15% on sequential writes)
- don't force direct IO to be serialized, forgotten change during mount
API port, brings back +60% of throughput
- lockless calculation of number of shrinkable extent maps, improve
performance with many memcg allocated objects
Notable fixes:
- in zoned mode, fix a deadlock due to zone reclaim and relocation when
space needs to be flushed
- don't trim device which is internally not tracked as writeable (e.g.
when missing device is being rescanned)
- fix deadlock when cloning inline extent and mounted with flushoncommit
- fix false IO failures after direct IO falls back to buffered write in
some cases
Core:
- remove COW fixup mechanism completely; detect and fix changes to pages
outside of filesystem tracking, guaranteed since 5.8, grace period is
over
- remove 2K block size support, experimental to test subpage code on
x86_64 but now it would block folio changes
- tree-checker improvements of:
- free-space cache and tree items
- root reference and backref items
- extent state exceptions in reloc tree
- subpage mode updates:
- code optimizations, simplify tracking bitmaps
- re-enable readahead of compressed extent
- extend bitmap size to cover huge folios
- add tracepoints related to sync, tree-log and transactions
- device stats item tracking unification, remove item if there are no
stats recorded, also don't leave stale stats on replaced device
- allow extent buffer pages to be allocated as movable, to help page
migration
- added checks for proper extent buffer release
- btrfs.ko code size reduction due to transaction abort call
simplifications
- several struct size reductions
- more auto free conversions
- more verbose assertions
----------------------------------------------------------------
The following changes since commit 4549871118cf616eecdd2d939f78e3b9e1dddc48:
Linux 7.1-rc7 (2026-06-07 15:37:58 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-7.2-tag
for you to fetch changes up to ae2eb64bfd9762536f60b690840adcdf622cdcce:
btrfs: fix use-after-free after relocation failure with concurrent COW (2026-06-09 18:22:47 +0200)
----------------------------------------------------------------
Anand Jain (2):
btrfs: use on-disk uuid for s_uuid in temp_fsid mounts
btrfs: derive f_fsid from on-disk fsid and dev_t
Ben Maurer (1):
btrfs: use lockless read in nr_cached_objects shrinker callback
Cen Zhang (1):
btrfs: annotate lockless read of defrag_bytes in should_nocow()
Daan De Meyer (1):
btrfs: add 32-bit compat ioctl for BTRFS_IOC_GET_SUBVOL_INFO
Dave Chen (1):
btrfs: optimize fill_holes() to merge a new hole with both adjacent items
David Sterba (18):
btrfs: move condition to WARN_ON in btrfs_set_delalloc_extent()
btrfs: replace open coded DEBUG_WARN in extent_writepage()
btrfs: lift assertions to beginning of insert_delayed_ref()
btrfs: do more kmalloc_obj()/kmalloc_objs() conversions
btrfs: convert kmalloc_array to kmalloc_objs in btrfs_calc_avail_data_space()
btrfs: convert ioctl handlers to AUTO_KFREE
btrfs: make more ASSERTs verbose, part 3
btrfs: remove 32bit compat code for VFS inode number
btrfs: move transaction abort message to __btrfs_abort_transaction()
btrfs: remove fs_info from struct btrfs_backref_iter
btrfs: use on stack backref iterator in build_backref_tree()
btrfs: validate negative error number passed to btrfs_abort_transaction()
btrfs: simplify how first hit is passed to __btrfs_abort_transaction()
btrfs: add message format for qgroupid
btrfs: send: switch struct fs_path to auto freeing
btrfs: use shifts for sectorsize and nodesize
btrfs: send: pass bool for pending_move and refs_processed parameters
btrfs: switch local indicator variables to bools
Filipe Manana (51):
btrfs: use a kmem_cache for block groups
btrfs: reduce size of struct btrfs_block_group
btrfs: use a kmem_cache for free space control structures
btrfs: remove start field from struct btrfs_free_space_ctl
btrfs: remove unit field from struct btrfs_free_space_ctl
btrfs: reduce size of struct btrfs_free_space_ctl
btrfs: remove op field from struct btrfs_free_space_ctl
btrfs: remove block group argument from copy_free_space_cache()
btrfs: remove unnecessary ctl argument from __btrfs_write_out_cache()
btrfs: remove unnecessary ctl argument from write_cache_extent_entries()
btrfs: use min_size variable to setup block rsv in btrfs_replace_file_extents()
btrfs: use the enums instead of int type in struct btrfs_block_group fields
btrfs: add missing unlikely to if branches leading to a DEBUG_WARN()
btrfs: change return type from int to bool in check_eb_range()
btrfs: make sure report_eb_range() is not inlined
btrfs: tracepoints: remove double negation in finish ordered extent event
btrfs: tracepoints: remove pointless root field from transaction commit event
btrfs: remove call to transaction commit trace in warn_about_uncommitted_trans()
btrfs: remove call to transaction commit trace in btrfs_cleanup_transaction()
btrfs: tracepoints: pass a transaction handle to transaction commit event
btrfs: tracepoints: add in_fsync field to transaction commit event
btrfs: tracepoints: add trace event for transaction aborts
btrfs: tracepoints: add trace event for the start of a new transaction
btrfs: tracepoints: trace transaction states during commit phase
btrfs: stop checking for greater then zero return values in btrfs_sync_file()
btrfs: remove redundant writeback error check during fsync
btrfs: tracepoints: add trace event for when fsync finishes
btrfs: tracepoints: add trace event for btrfs_log_inode_parent()
btrfs: use a named enum for the log mode in inode log functions
btrfs: tracepoints: add trace event for btrfs_log_inode()
btrfs: tracepoints: add trace event for btrfs_log_all_parents()
btrfs: tracepoints: add trace event for log_all_new_ancestors()
btrfs: tracepoints: add trace event for log_new_dir_dentries()
btrfs: tracepoints: add trace event for add_conflicting_inode()
btrfs: tracepoints: add trace event for log_conflicting_inodes()
btrfs: use simple assertions where enough during inode logging and replay
btrfs: tracepoints: add trace event for log_new_delayed_dentries()
btrfs: tracepoints: add trace event for btrfs_record_unlink_dir()
btrfs: tracepoints: add trace event for btrfs_record_snapshot_destroy()
btrfs: tracepoints: add trace event for btrfs_record_new_subvolume()
btrfs: tracepoints: add trace event for btrfs_log_new_name()
btrfs: tracepoints: add trace event for btrfs_sync_log()
btrfs: tracepoints: show inode type in btrfs_sync_file_enter() event
btrfs: fix invalid pointer dereference in __btrfs_run_delayed_refs()
btrfs: fix deadlock cloning inline extent when using flushoncommit
btrfs: use mapping shared locking for reading super block
btrfs: return real error after lookup failure in btrfs_ioctl_default_subvol()
btrfs: use verbose assertions in backref.c
btrfs: move locking into btrfs_get_reloc_bg_bytenr()
btrfs: move WARN_ON on unexpected error in __add_tree_block()
btrfs: fix use-after-free after relocation failure with concurrent COW
Jan Kara (1):
btrfs: limit size of bios submitted from writeback
Johannes Thumshirn (6):
btrfs: zoned: document RECLAIM_ZONES flush state
btrfs: zoned: decode 'RECLAIM_ZONES' state in tracepoints
btrfs: zoned: always set data_relocation_bg
btrfs: zoned: don't account data relocation space-info in statfs free space
btrfs: zoned: fix deadlock waiting for ticket during data relocation
btrfs: zoned: always set max_active_zones for zoned devices
KangNing Liao (1):
btrfs: protect sb_write_pointer() with invalidate lock
Mark Harmstone (2):
btrfs: add ioctl GET_CSUMS to read raw checksums from file range
btrfs: don't force DIO writes to be serialized
Matthew Wilcox (Oracle) (3):
Revert "btrfs: fix the file offset calculation inside btrfs_decompress_buf2page()"
btrfs: replace __free_page with folio_put() in attach_eb_folio_to_filemap()
btrfs: use bvec_phys() in compressed_bio_last_folio()
Qu Wenruo (33):
btrfs: pass a valid btrfs_tree_parent_check when possible
btrfs: remove the COW fixup mechanism
btrfs: remove folio checked subpage bitmap tracking
btrfs: check and set EXTENT_DELALLOC_NEW before clearing EXTENT_DELALLOC
btrfs: remove 2K block size support
btrfs: enable cross-folio readahead for bs < ps and large folio cases
btrfs: refresh add_ra_bio_pages() to indicate it's using folios
btrfs: move large data folios out of experimental features
btrfs: warn about extent buffer that can not be released
btrfs: unexport and move extent_invalidate_folio()
btrfs: simplify the btree folio wait during invalidation
btrfs: remove locked subpage bitmap
btrfs: detect dirty blocks without an ordered extent more reliably
btrfs: unify folio dirty flag clearing
btrfs: use dirty flag to check if an ordered extent needs to be truncated
btrfs: remove folio_test_ordered() usage
btrfs: remove folio ordered flag and subpage bitmap
btrfs: tree-checker: extract the shared key check for free space entries
btrfs: tree-checker: ensure free space tree entries won't overflow
btrfs: tree-checker: add more cross checks for free space tree
btrfs: update the out-of-date comments on subpage
btrfs: prepare subpage operations to support more than BITS_PER_LONG sub-bitmaps
btrfs: migrate btrfs_bio_ctrl::submit_bitmap to support larger bitmaps
btrfs: introduce support for huge folios
btrfs: remove the dev stats item for replace target device
btrfs: remove the dev stats item when removing a device
btrfs: always update/create the dev stats item when adding a new device
btrfs: avoid unnecessary dev stats updates
btrfs: do not trim a device which is not writeable
btrfs: print a message when a missing device re-appears
btrfs: fix false IO failure after falling back to buffered write
btrfs: fix incorrect buffered IO fallback for append direct writes
btrfs: retry faulting in the pages after a zero sized short direct write
Rik van Riel (1):
btrfs: allocate eb-attached btree pages as movable
Teng Liu (1):
btrfs: validate data reloc tree file extent item members
Thorsten Blum (1):
btrfs: use QSTR() in __btrfs_ioctl_snap_create()
Weiming Shi (1):
btrfs: lzo: reject compressed segment that overflows the compressed input
Zhang Cen (2):
btrfs: free-space-tree: reject mismatched extent and bitmap items
btrfs: tree-checker: validate names in ROOT_REF and ROOT_BACKREF
ZhengYuan Huang (3):
btrfs: balance: fix potential bg lookup failure in chunk_usage_filter()
btrfs: balance: fix potential bg lookup failure in chunk_usage_range_filter()
btrfs: balance: fix potential bg lookup failure in btrfs_may_alloc_data_chunk()
fs/btrfs/Kconfig | 8 +-
fs/btrfs/backref.c | 73 ++--
fs/btrfs/backref.h | 9 +-
fs/btrfs/block-group.c | 48 +-
fs/btrfs/block-group.h | 40 +-
fs/btrfs/btrfs_inode.h | 37 +-
fs/btrfs/compression.c | 83 +---
fs/btrfs/ctree.c | 33 +-
fs/btrfs/defrag.c | 18 -
fs/btrfs/delalloc-space.c | 6 +-
fs/btrfs/delayed-ref.c | 5 +-
fs/btrfs/dev-replace.c | 11 +-
fs/btrfs/direct-io.c | 62 ++-
fs/btrfs/disk-io.c | 139 ++++--
fs/btrfs/extent-io-tree.c | 4 +-
fs/btrfs/extent-tree.c | 57 ++-
fs/btrfs/extent_io.c | 345 ++++++++-------
fs/btrfs/extent_io.h | 25 +-
fs/btrfs/extent_map.c | 6 +-
fs/btrfs/fiemap.c | 2 +-
fs/btrfs/file-item.c | 6 +-
fs/btrfs/file.c | 120 +++--
fs/btrfs/free-space-cache.c | 163 ++++---
fs/btrfs/free-space-cache.h | 14 +-
fs/btrfs/free-space-tree.c | 51 ++-
fs/btrfs/fs.h | 57 +--
fs/btrfs/inode.c | 327 +++-----------
fs/btrfs/ioctl.c | 757 +++++++++++++++++++++++---------
fs/btrfs/lzo.c | 11 +
fs/btrfs/ordered-data.c | 24 +-
fs/btrfs/ordered-data.h | 2 +
fs/btrfs/qgroup.c | 41 +-
fs/btrfs/raid-stripe-tree.c | 4 +-
fs/btrfs/raid56.c | 18 +-
fs/btrfs/reflink.c | 111 ++---
fs/btrfs/relocation.c | 348 +++++++++------
fs/btrfs/relocation.h | 2 +-
fs/btrfs/root-tree.c | 6 +-
fs/btrfs/scrub.c | 3 +-
fs/btrfs/send.c | 162 +++----
fs/btrfs/space-info.c | 9 +
fs/btrfs/space-info.h | 11 +
fs/btrfs/subpage.c | 286 +++++-------
fs/btrfs/subpage.h | 33 +-
fs/btrfs/super.c | 58 ++-
fs/btrfs/tests/btrfs-tests.c | 1 +
fs/btrfs/tests/free-space-tests.c | 24 +-
fs/btrfs/transaction.c | 39 +-
fs/btrfs/transaction.h | 50 ++-
fs/btrfs/tree-checker.c | 183 ++++++--
fs/btrfs/tree-log.c | 276 ++++++++----
fs/btrfs/tree-log.h | 7 +
fs/btrfs/verity.c | 4 +-
fs/btrfs/volumes.c | 166 +++++--
fs/btrfs/volumes.h | 2 +
fs/btrfs/zoned.c | 79 ++--
include/trace/events/btrfs.h | 889 +++++++++++++++++++++++++++++++++++++-
include/uapi/linux/btrfs.h | 34 ++
58 files changed, 3480 insertions(+), 1909 deletions(-)
next reply other threads:[~2026-06-15 21:29 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-15 21:29 David Sterba [this message]
2026-06-16 7:07 ` [GIT PULL] Btrfs updates for 7.2 pr-tracker-bot
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=cover.1781558337.git.dsterba@suse.com \
--to=dsterba@suse.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
/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.