Linux Btrfs filesystem development
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox