* [GIT PULL] Btrfs updates for 7.3
@ 2026-08-19 16:50 David Sterba
0 siblings, 0 replies; only message in thread
From: David Sterba @ 2026-08-19 16:50 UTC (permalink / raw)
To: torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel
Hi,
this is summer edition of btrfs changes, smaller than usual. Yet, there
are performance improvements in various areas or for specific workloads
and some notable changes like removing space cache v1 code or mount
option reduction.
Please pull, thanks.
User visible changes:
- free space v1 disabled by default; the v2 (free space tree) is mkfs
default since 5.15, filesystems with v1 still work but could be
slightly slower due to lack of block group caching
- mount option 'rescue=usebackuproot' requires read-only mount, it's
too risky to allow writable mount
- remove standalone mount option 'usebackuproot', deprecated in 5.9
- preserve constraints of NODATASUM and NODATACOW when chattr and mount
options may change the attributes
- remove arbitrary limitation of 4KiB for page size when allowing block
sizes smaller than page
- print messages when pinned block groups affect swap activation
Performance improvements:
- use iomap bounce buffer for direct io instead of a fall back to
buffered io; past correctness vs speed trade-offs dropped performance
to ~50% of theoretical maximum, now it's ~95%, effectively doubled
- replace xarray with local LRU list for tracking inhibited extent
buffers, restored performance to pre-inhibition state (relatively ~3x)
- remove unnecessary 1 jiffy delay in "non-SSD" mode with multiple
logging tasks, decrease latency, throughput increased ~5x on sample
workload
- skip hole detection during full fsync for files without holes and lots
of extents, reduce run time ~5x on sample workload (microsecond ranges)
- reduce locking around extent readahead so it does not slow down other
tasks using an overlapping range
- enhance extent buffer allocation modes to allow NOWAIT semantics in
some cases
Notable fixes:
- write-protect folios during writeback, prevent concurrent mmap and
compress/checksumming/etc undesired interactions
- in zoned mode, handle transient overcommit full instead of going
read-only
- fix possible deadlock between defragmentation and delayed allocation
reservations
- handle remaining iputs at umount time
- fix lockdep warning between device scan locking and log mutex
- add workaround for degenerate RAID56 device count modes (2 and 3) not
supported by the parity calculation library
- restore check that subvolume is not read-only when changing ACLs
- retry reading verity data colliding with up-to-date status changes
Core:
- simplify raid56 stripe handling by using contiguous virtual
allocations
- in zoned mode, fix various metadata write issues in writeback or
unmount
- space reservation fixes
- remove unused data structure members
- more auto-freeing conversions
- error pointer values are printed using %pe format
----------------------------------------------------------------
The following changes since commit a13307e97d5c54b65720bb71fa379960ded1e51a:
Merge tag 'bpf-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf (2026-08-07 08:08:57 -0700)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-7.3-tag
for you to fetch changes up to 4096e2a06f43fae209d6472d395f3219e02ab2e6:
btrfs: skip hole detection during full fsync for files without holes (2026-08-07 19:17:19 +0200)
----------------------------------------------------------------
Boris Burkov (6):
btrfs: release extent lock per folio in readahead
btrfs: write-protect folios during data writeback
btrfs: factor init_extent_buffer from __alloc_extent_buffer
btrfs: add struct btrfs_eb_prealloc
btrfs: enable unlocked NOFAIL retry for eb allocations
btrfs: use GFP_NOWAIT for tree block readahead
David Sterba (1):
btrfs: sink idmap parameter to __btrfs_ioctl_snap_create()
Dongjiang Zhu (1):
btrfs: start qgroup ioctl transactions on the quota root
Filipe Manana (18):
btrfs: don't over reserve metadata space for property in btrfs_fileattr_set()
btrfs: fix memory barrier order in reloc_root_is_dead()
btrfs: fix copy_remapped_data() to not allocate more memory than intended
btrfs: send: fix comment for SEND_MAX_DIR_UTIMES_CACHE_SIZE
btrfs: send: fix is_current_inode_path() to avoid path resets for common prefixes
btrfs: defrag: fix deadlock between defrag and delalloc space reservation
btrfs: fix pending delayed iputs when using autodefrag
btrfs: defrag: use a single list for each loop in defrag_one_range()
btrfs: defrag: use auto kfree in defrag_one_range() for folios array
btrfs: defrag: use simple list_del() in defrag_collect_targets()
btrfs: defrag: remove pointless list_del_init() in defrag_one_cluster()
btrfs: get rid of useless label in btrfs_create_dio_extent()
btrfs: stop sleeping for one jiffy in non-ssd mounts during log commit
btrfs: remove log batch counter use for fsync
btrfs: move condition for log commit wait into wait_log_commit()
btrfs: check for exit condition after waking in wait_log_commit()
btrfs: use simple booleans for log_commit field in struct btrfs_root
btrfs: skip hole detection during full fsync for files without holes
Guanghui Yang (1):
btrfs: drop recovered reloc root refs on recovery failure
Hongling Zeng (1):
btrfs: add missing sctx check in cleanup path in btrfs_ioctl_send()
Johannes Thumshirn (5):
btrfs: zoned: don't force read-only on transient -EAGAIN from reloc merge
btrfs: zoned: flush active metadata block group at btree_writepages() start
btrfs: zoned: drop stranded dirty metadata on transaction abort
btrfs: zoned: drop stranded dirty metadata buffers at unmount
btrfs: zoned: don't clobber the extent buffer when zeroing it out
Leo Martins (1):
btrfs: replace writeback inhibition xarray with a fixed inline buffer
Miquel Sabaté Solà (1):
btrfs: don't pass tree_id in btrfs_search_path_in_tree()
Qu Wenruo (31):
btrfs: remove btrfs_dio_data::submitted
btrfs: refactor btrfs_dio_iomap_end()
btrfs: do not overwrite NODATASUM flag when removing NODATACOW flag
btrfs: log swapfile activation/deactivation and warn about pinned block groups
btrfs: disable v1 space cache
btrfs: remove out-of-date comments regarding 2K block size
btrfs: allow any block size that is no larger than page size
btrfs: use correct type for sectorsize/nodesize/blocksize
btrfs: remove btrfs_fs_info::stripesize
btrfs: always wait for ordered extents to avoid OE races
btrfs: use IOMAP_DIO_BOUNCE flag instead of falling back to buffered IO
btrfs: add "rescue=usebackuproot" into forced read-only options
btrfs: add "rescue=usebackuproot" into "rescue=all" shortcut
btrfs: remove "usebackuproot" mount option
btrfs: remove SCRUB_MAX_SECTORS_PER_BLOCK
btrfs: factor out common scrub read endio into a helper
btrfs: scrub: implement calc_sector_number() in a faster way
btrfs: use kvmalloc() for stripe buffer of scrub_stripe
btrfs: fix a lockdep caused by path resolution during device scan
btrfs: make sure EXTENT_BUFFER_READING is cleared under refs_lock
btrfs: remove btrfs_chunk_map::io_(align|width) members
btrfs: remove duplicated block group type assignment
btrfs: disguise single-data-RAID56 as RAID1/RAID1C3
btrfs: open code BTRFS_BYTES_TO_BLKS()
btrfs: use %pe for error code output
btrfs: convert reflink.c to use btrfs_inode as parameters
btrfs: use aligned range for locking in extent_fiemap()
btrfs: use aligned range for locking in reflink
btrfs: add validation for extent states
btrfs: qgroup: fix a wrong length calculation in qgroup_free_reserved_data()
btrfs: add extra ASSERT()s to make sure the folio size is correct
Rosen Penev (1):
btrfs: compression: allocate heuristic buckets with workspace
Shuangpeng Bai (1):
btrfs: fix extent map leak in NOCOW direct I/O write
Sun YangKai (2):
btrfs: change block group reclaim_mark to bool
btrfs: check if root is readonly when setting posix acl
Yichong Chen (1):
btrfs: retry verity reads for not-uptodate Merkle folios
Zenghui Yu (1):
btrfs: sysfs: fix path of the "read_policy" module parameter in comment
fs/btrfs/acl.c | 4 +
fs/btrfs/block-group.c | 13 +-
fs/btrfs/block-group.h | 4 +-
fs/btrfs/compression.c | 14 +-
fs/btrfs/ctree.c | 36 ++-
fs/btrfs/ctree.h | 6 +-
fs/btrfs/defrag.c | 61 +++--
fs/btrfs/delayed-inode.c | 12 +-
fs/btrfs/direct-io.c | 210 +++++++-------
fs/btrfs/disk-io.c | 153 +++++++----
fs/btrfs/disk-io.h | 2 +
fs/btrfs/extent-io-tree.c | 21 ++
fs/btrfs/extent-tree.c | 28 +-
fs/btrfs/extent_io.c | 637 ++++++++++++++++++++++++++++++++-----------
fs/btrfs/extent_io.h | 29 ++
fs/btrfs/fiemap.c | 6 +-
fs/btrfs/file.c | 120 ++++----
fs/btrfs/fs.c | 19 +-
fs/btrfs/fs.h | 6 +-
fs/btrfs/inode.c | 86 ++++--
fs/btrfs/ioctl.c | 138 ++++++----
fs/btrfs/messages.c | 10 +-
fs/btrfs/qgroup.c | 26 +-
fs/btrfs/raid56.c | 18 +-
fs/btrfs/raid56.h | 2 +-
fs/btrfs/reflink.c | 111 ++++----
fs/btrfs/relocation.c | 97 +++++--
fs/btrfs/root-tree.c | 6 +-
fs/btrfs/scrub.c | 234 +++++++---------
fs/btrfs/send.c | 17 +-
fs/btrfs/space-info.c | 2 +-
fs/btrfs/subpage.c | 7 +-
fs/btrfs/subpage.h | 3 +-
fs/btrfs/super.c | 37 +--
fs/btrfs/sysfs.c | 2 +-
fs/btrfs/transaction.c | 18 +-
fs/btrfs/transaction.h | 25 +-
fs/btrfs/tree-log.c | 99 +++----
fs/btrfs/verity.c | 18 +-
fs/btrfs/volumes.c | 64 ++---
fs/btrfs/volumes.h | 10 +-
include/trace/events/btrfs.h | 4 +-
42 files changed, 1437 insertions(+), 978 deletions(-)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-19 16:50 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19 16:50 [GIT PULL] Btrfs updates for 7.3 David Sterba
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.