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.4
Date: Thu, 15 Oct 2026 19:57:24 +0200 [thread overview]
Message-ID: <cover.1792086912.git.dsterba@suse.com> (raw)
Hi,
there's a handful of user visible changes, some of them fixes and the
rest is in the core. There are some minor performance improvements too.
Please pull, thanks.
User visible changes:
- remove tweakable sysfs way to enable features, used only for extent-irefs
which has been default since 3.12; the sysfs interface makes it complicated
due to locking and context, unlike ioctl
- change which backup superblock does mount option 'rescue=usebackuproot'
choose, skip the last one due to rotation, for more fine grained control add
options selecting a specific backup superblock by index (usebackuproot_N)
Notable fixes:
- syslog message fixup of error state description, duplicate 'E' renamed to 'H'
(emergency shutdown), added 'I 'when delayed iputs are blocked
- use kvmalloc for b-tree buffer allocations, as we're using more contig ranges
because of large folios, the allocations started to warn on fragmented memory
- handle unknown commands for the /dev/btrfs-control ioctls
- tune timing of transaction commit when the space is getting low
- in raid56, skip verifications if data checksums are not available
Performance improvements:
- reflink speedup, reorder locking and flushing to optimize for more common
cases where the reflinked ranges are accessed, avoid unnecessary contention
- minor speedup in zstd decompression (+8MB/s)
- reduced contention of inode extent map lock, improves e.g. when shrinker
processes inodes without extent maps, measured time reduction 10-20%
Core changes:
- move allocation errors out of some contexts (new inode/dentry/rename) to
avoid transaction aborts
- allocate system new chunks earlier, e.g. when consumed by fallocate, and tune
deleting unused block groups if the system space is low
- tree checker: reject extents for special files
- many qgroup fixes regarding enabling/disabling, other state changes and
qgroup relation updates
- error handling fixes
- refactoring, cleanups
- page to folio cleanups
- transaction state macros/enums simplification
- parameter simplifications
----------------------------------------------------------------
The following changes since commit 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907:
Linux 7.3-rc7 (2026-10-11 20:04:55 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-7.4-tag
for you to fetch changes up to 58e844c3ba387ceb0f527a6ba82aa50c81c4d7b7:
btrfs: fix use-after-free on quota enable allocation failure (2026-10-12 23:59:21 +0200)
----------------------------------------------------------------
Boris Burkov (6):
btrfs: keep unused block groups queued when a pass fails
btrfs: pre-flush reflink source before taking inode locks
btrfs: skip unlocked reflink source flush if the inode has writers
btrfs: downgrade the reflink source inode lock for tree walking
btrfs: allocate additional SYSTEM space earlier
btrfs: commit after deleting an unused block group if system space is low
Breno Leitao (1):
btrfs: skip extent tree lock in the shrinker for inodes without extent maps
Daniel Vacek (2):
btrfs: consume given iter directly instead of copying in csum_one_bio()
btrfs: use bio::remaining for async checksumming synchronization
Filipe Manana (31):
btrfs: increment extent count once when logging extents during fast fsync
btrfs: tree-checker: cache accessor return value in CHECK_FE_ALIGNED()
btrfs: add missing unlikely to a couple error checks during sys chunk array validation
btrfs: remove redundant eb generation check in btrfs_buffer_uptodate()
btrfs: remove duplicate error message when writing super blocks
btrfs: fix off by one super block end offset calculation when writing super blocks
btrfs: fix barrier usage in btrfs_record_root_in_trans()
btrfs: assert reloc mutex is held in record_root_in_trans()
btrfs: fix dangling nodes in tree-mod-log after error in btrfs_tree_mod_log_insert_root()
btrfs: simplify dir item location setup in btrfs_insert_xattr_item()
btrfs: fix incomplete iteration over fs state when logging messages
btrfs: fix duplicated code in fs state string in logged messages
btrfs: add missing code for no delayed iput fs state in log messages
btrfs: remove unnecessary pointer increment in btrfs_state_to_string()
btrfs: avoid overhead when logging messages if fs state is clean
btrfs: fix off-by-one end offset check in report_setget_bounds()
btrfs: remove fs_info argument from btrfs_block_rsv_add()
btrfs: remove fs_info argument from btrfs_block_rsv_refill()
btrfs: remove pointless qgroup assignment in block_rsv_release_bytes()
btrfs: remove unnecessary forward struct declarations in volumes.h
btrfs: qgroup: fix swapped blocks existence check when tracing after COW
btrfs: qgroup: abort transaction on failure to add qgroup relation
btrfs: qgroup: fix leak of qgroups in rb tree after failure to enable quotas
btrfs: qgroup: merge error labels in btrfs_quota_enable()
btrfs: abort transaction on qgroup failures in create_pending_snapshot()
btrfs: qgroup: fix off-by-one max level check in qgroup_trace_new_subtree_blocks()
btrfs: fix lost error return value in btrfs_alloc_logged_file_extent()
btrfs: qgroup: make btrfs_record_squota_delta() return void
btrfs: use READ_ONCE() to read the chunk size from the data space_info
btrfs: defrag: fix key comparison with max defrag key in btrfs_defrag_leaves()
btrfs: defrag: fix check to see if next extent can be defragged too
Guanghui Yang (2):
btrfs: free unlinked replace target on initialization failure
btrfs: roll back sprout setup after device add failure
Hemanth Selam (1):
btrfs: fix typos and repeated words in comments
Hengyu Liang (1):
btrfs: return -ENOTTY for unknown ioctls on the control device
Jeff Layton (4):
btrfs: split btrfs_insert_delayed_dir_index() into prealloc and commit phases
btrfs: pre-allocate delayed dir index before btree modification
btrfs: handle ENOMEM from btrfs_insert_dir_item() without aborting
btrfs: pre-allocate delayed dir index for non-overwrite rename
Johannes Thumshirn (1):
btrfs: zoned: fix double list add in btrfs_load_block_group_zone_info
Peng Fan (1):
btrfs: use assign_bit() where applicable
Qu Wenruo (29):
btrfs: refactor read_key_bytes() to remove the dest_folio parameter
btrfs: replace btrfs_repair_io_failure() to use bio for page iteration
btrfs: enhance btrfs_data_csum_ok() to use bio for page iteration
btrfs: use a shared helper to calculate data checksum for a bio
btrfs: remove on-stack paddrs[] array usage
btrfs: remove unused variable flags from btrfs_read_qgroup_config()
btrfs: qgroup: use atomic operations for btrfs_fs_info::qgroup_flags
btrfs: reject new qgroup rescan during subvolume dropping
btrfs: avoid long stall when dropping a non-shared large subvolume
btrfs: remove runtime tweakable feature sysfs interface
btrfs: use ordered extent to grab the logical address for submission
btrfs: tree-checker: reject file extent items for special files
btrfs: use kvmalloc() for b-tree split_item()
btrfs: tree-log: use kvmalloc() for overwrite_item()
btrfs: use kvmalloc() for uncompress_inline()
btrfs: use kvmalloc() to allocate compression workspace buffer for zlib and zstd
btrfs: cleanup and rename submit_extent_folio()
btrfs: fix off-by-one end related to inode_need_compress()
btrfs: simplify heuristic_collect_sample() to handle large folios better
btrfs: move __TRANS_* and TRANS_* flags out of transaction.h
btrfs: remove __TRANS_FREEZABLE
btrfs: remove __TRANS_* flags
btrfs: qgroup: do not treat "ret > 0" as error when deleting a qgroup
btrfs: qgroup: use qgroup_mark_inconsistent() in quick_update_accounting()
btrfs: qgroup: do not leak -ENOENT from btrfs_remove_qgroup()
btrfs: raid56: do not verify the content if there is no data checksum
btrfs: always use the second newest slot for rescue=usebackuproot
btrfs: introduce more accurate usebackuproot options
btrfs: prevent use-after-free in btrfs_transaction::switch_commits
Tal Zussman (8):
btrfs: tests: rename process_page_range() to process_folio_range()
btrfs: tests: convert test_find_delalloc() to use folios
btrfs: tests: use eb folio helpers in extent buffer memory checks
btrfs: convert btrfs_compr_pool_scan() to use folios
btrfs: convert heuristic_collect_sample() to use folios
btrfs: fix stale function references in compression comments
btrfs: use folios for reading super blocks from the block device
btrfs: use u64 for the page indices in heuristic_collect_sample()
Usama Arif (1):
btrfs: zstd: avoid a copy in zstd_decompress_bio()
Wentao Liang (1):
btrfs: zoned: fix block group reference leak in btrfs_repair_one_zone()
Yalagada Pavan Kumar (1):
btrfs: fix use-after-free on quota enable allocation failure
Yang Xiuwei (1):
btrfs: drop unused uring encoded IO REISSUE stash helpers
Zhen Ni (1):
btrfs: replace is_data_bbio() with is_data_inode() for direct usage
fs/btrfs/accessors.c | 2 +-
fs/btrfs/backref.c | 2 +-
fs/btrfs/bio.c | 163 +++++++++++---------------
fs/btrfs/bio.h | 9 +-
fs/btrfs/block-group.c | 65 +++++++++--
fs/btrfs/block-group.h | 2 +-
fs/btrfs/block-rsv.c | 12 +-
fs/btrfs/block-rsv.h | 6 +-
fs/btrfs/btrfs_inode.h | 22 ++--
fs/btrfs/compression.c | 61 +++++-----
fs/btrfs/ctree.c | 4 +-
fs/btrfs/ctree.h | 2 +-
fs/btrfs/defrag.c | 8 +-
fs/btrfs/delayed-inode.c | 118 ++++++++++++++-----
fs/btrfs/delayed-inode.h | 22 +++-
fs/btrfs/dev-replace.c | 10 +-
fs/btrfs/dir-item.c | 50 +++++---
fs/btrfs/dir-item.h | 5 +-
fs/btrfs/direct-io.c | 7 ++
fs/btrfs/disk-io.c | 167 +++++++++++++-------------
fs/btrfs/extent-io-tree.c | 2 +-
fs/btrfs/extent-tree.c | 21 ++--
fs/btrfs/extent_io.c | 247 +++++++++++++++++++--------------------
fs/btrfs/extent_map.c | 8 ++
fs/btrfs/file-item.c | 35 ++----
fs/btrfs/fs.c | 2 +-
fs/btrfs/fs.h | 3 +-
fs/btrfs/inode.c | 190 +++++++++++++++---------------
fs/btrfs/ioctl.c | 14 +--
fs/btrfs/messages.c | 28 ++---
fs/btrfs/props.c | 3 +-
fs/btrfs/qgroup.c | 212 +++++++++++++++++++--------------
fs/btrfs/qgroup.h | 20 +++-
fs/btrfs/raid56.c | 68 ++++++-----
fs/btrfs/reflink.c | 51 +++++++-
fs/btrfs/relocation.c | 13 +--
fs/btrfs/root-tree.c | 3 +-
fs/btrfs/send.c | 2 +-
fs/btrfs/space-info.c | 4 +-
fs/btrfs/super.c | 31 ++++-
fs/btrfs/sysfs.c | 134 ++-------------------
fs/btrfs/tests/btrfs-tests.c | 9 --
fs/btrfs/tests/btrfs-tests.h | 2 -
fs/btrfs/tests/extent-io-tests.c | 129 ++++++++++----------
fs/btrfs/transaction.c | 127 +++++++++++++-------
fs/btrfs/transaction.h | 31 ++---
fs/btrfs/tree-checker.c | 83 ++++++++++---
fs/btrfs/tree-log.c | 11 +-
fs/btrfs/tree-mod-log.c | 13 ++-
fs/btrfs/verity.c | 31 +++--
fs/btrfs/volumes.c | 67 ++++++++---
fs/btrfs/volumes.h | 4 +-
fs/btrfs/zlib.c | 10 +-
fs/btrfs/zoned.c | 20 ++--
fs/btrfs/zstd.c | 73 +++++++++---
include/uapi/linux/btrfs_tree.h | 25 ++--
56 files changed, 1360 insertions(+), 1103 deletions(-)
reply other threads:[~2026-10-15 17:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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.1792086912.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.