* [GIT PULL] Btrfs updates for 7.4
@ 2026-10-15 17:57 David Sterba
0 siblings, 0 replies; only message in thread
From: David Sterba @ 2026-10-15 17:57 UTC (permalink / raw)
To: torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel
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(-)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-15 17:57 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-15 17:57 [GIT PULL] Btrfs updates for 7.4 David Sterba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox