All of lore.kernel.org
 help / color / mirror / Atom feed
* [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 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.