All of lore.kernel.org
 help / color / mirror / Atom feed
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 6.19
Date: Fri, 28 Nov 2025 02:43:04 +0100	[thread overview]
Message-ID: <cover.1764293730.git.dsterba@suse.com> (raw)

Hi,

please pull the following branch with btrfs updates. Thanks.

Features:

- shutdown ioctl support (needs CONFIG_BTRFS_EXPERIMENTAL for now)
  - set filesystem state as being shut down (also named going down in
    other filesystems), where all active operations return EIO and this
    cannot be changed until unmount
  - pending operations are attempted to be finished but error messages
    may still show up depending on where exactly the shutdown happened

- scrub (and device replace) vs suspend/hibernate
  - a running scrub will prevent suspend, which can be annoying as
    suspend is an immediate request and scrub is not critical
  - filesystem freezing before suspend was not sufficient as the problem
    was in process freezing
  - behaviour change: on suspend scrub and device replace are cancelled,
    where scrub can record the last state and continue from there; the
    device replace has to be restarted from the beginning

- zone stats exported in sysfs, from the perspective of the filesystem
  this includes active, reclaimable, relocation etc zones

Performance:

- improvements when processing space reservation tickets by optimizing
  locking and shrinking critical sections, cumulative improvements in
  lockstat numbers show +15%

Notable fixes:

- use vmalloc fallback when allocating bios as high order allocations
  can happen with wide checksums (like sha256)

- scrub will always track the last position of progress so it's not
  starting from zero after an error

Core:

- under experimental config, checksum calculations are offloaded to
  process context, simplifies locking and allows to remove compression
  write worker kthread(s)
  - speed improvement in direct IO throughput with buffered IO fallback
    is +15% when not offloaded but this is more related to internal
    crypto subsystem improvements
  - this will be probably default in the future removing the sysfs
    tunable

- (experimental) block size > page size updates
  - support more operations when not using large folios (encoded
    read/write and send)
  - raid56

- more preparations for fscrypt support

Other:

- more conversions to auto-cleaned variables

- parameter cleanups and removals

- extended warning fixes

- improved printing of structured values like keys

- lots of other cleanups and refactoring

----------------------------------------------------------------
The following changes since commit ac3fd01e4c1efce8f2c054cdeb2ddd2fc0fb150d:

  Linux 6.18-rc7 (2025-11-23 14:53:16 -0800)

are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.19-tag

for you to fetch changes up to 9e0e6577b3e5e5cf7c1acd178eb648e8f830ba17:

  btrfs: remove unnecessary inode key in btrfs_log_all_parents() (2025-11-25 01:53:33 +0100)

----------------------------------------------------------------
Andy Shevchenko (1):
      btrfs: replace const_ilog2() with ilog2()

Baolin Liu (1):
      btrfs: simplify list initialization in btrfs_compr_pool_scan()

Boris Burkov (2):
      btrfs: ignore ENOMEM from alloc_bitmap()
      btrfs: fix racy bitfield write in btrfs_clear_space_info_full()

David Sterba (6):
      btrfs: print-tree: use string format for key names
      btrfs: fix trivial -Wshadow warnings
      btrfs: subpage: rename macro variables to avoid shadowing
      btrfs: move and rename CSUM_FMT definition
      btrfs: make a few more ASSERTs verbose
      btrfs: remaining BTRFS_PATH_AUTO_FREE conversions

Filipe Manana (77):
      btrfs: use single return value variable in btrfs_relocate_block_group()
      btrfs: use end_pos variable where needed in btrfs_dirty_folio()
      btrfs: truncate ordered extent when skipping writeback past i_size
      btrfs: use variable for end offset in extent_writepage_io()
      btrfs: split assertion into two in extent_writepage_io()
      btrfs: add unlikely to unexpected error case in extent_writepages()
      btrfs: consistently round up or down i_size in btrfs_truncate()
      btrfs: avoid multiple i_size rounding in btrfs_truncate()
      btrfs: avoid repeated computations in btrfs_mark_ordered_io_finished()
      btrfs: remove fs_info argument from btrfs_try_granting_tickets()
      btrfs: remove fs_info argument from priority_reclaim_data_space()
      btrfs: remove fs_info argument from priority_reclaim_metadata_space()
      btrfs: remove fs_info argument from maybe_fail_all_tickets()
      btrfs: remove fs_info argument from calc_available_free_space()
      btrfs: remove fs_info argument from btrfs_can_overcommit()
      btrfs: remove fs_info argument from btrfs_dump_space_info()
      btrfs: remove fs_info argument from shrink_delalloc() and flush_space()
      btrfs: remove fs_info argument from btrfs_calc_reclaim_metadata_size()
      btrfs: remove fs_info argument from need_preemptive_reclaim()
      btrfs: remove fs_info argument from steal_from_global_rsv()
      btrfs: remove fs_info argument from handle_reserve_ticket()
      btrfs: remove fs_info argument from maybe_clamp_preempt()
      btrfs: fix parameter documentation for btrfs_reserve_data_bytes()
      btrfs: remove fs_info argument from __reserve_bytes()
      btrfs: remove fs_info argument from btrfs_reserve_metadata_bytes()
      btrfs: remove fs_info argument from btrfs_sysfs_add_space_info_type()
      btrfs: remove fs_info argument from btrfs_zoned_activate_one_bg()
      btrfs: add macros to facilitate printing of keys
      btrfs: use the key format macros when printing keys
      btrfs: remove pointless data_end assignment in btrfs_extent_item()
      btrfs: return real error when failing tickets in maybe_fail_all_tickets()
      btrfs: avoid recomputing used space in btrfs_try_granting_tickets()
      btrfs: make btrfs_can_overcommit() return bool instead of int
      btrfs: avoid used space computation when trying to grant tickets
      btrfs: avoid used space computation when reserving space
      btrfs: inline btrfs_space_info_used()
      btrfs: bail out earlier from need_preemptive_reclaim() if we have tickets
      btrfs: increment loop count outside critical section during metadata reclaim
      btrfs: shorten critical section in btrfs_preempt_reclaim_metadata_space()
      btrfs: avoid unnecessary reclaim calculation in priority_reclaim_metadata_space()
      btrfs: assert space_info is locked in steal_from_global_rsv()
      btrfs: assign booleans to global reserve's full field
      btrfs: process ticket outside global reserve critical section
      btrfs: remove double underscore prefix from __reserve_bytes()
      btrfs: reduce space_info critical section in btrfs_chunk_alloc()
      btrfs: reduce block group critical section in btrfs_free_reserved_bytes()
      btrfs: reduce block group critical section in btrfs_add_reserved_bytes()
      btrfs: reduce block group critical section in do_trimming()
      btrfs: reduce block group critical section in pin_down_extent()
      btrfs: use local variable for space_info in pin_down_extent()
      btrfs: remove 'reserved' argument from btrfs_pin_extent()
      btrfs: change 'reserved' argument from pin_down_extent() to bool
      btrfs: reduce block group critical section in unpin_extent_range()
      btrfs: remove pointless label and goto from unpin_extent_range()
      btrfs: add data_race() in btrfs_account_ro_block_groups_free_space()
      btrfs: move ticket wakeup and finalization to remove_ticket()
      btrfs: avoid space_info locking when checking if tickets are served
      btrfs: annotate as unlikely fs aborted checks in space flushing code
      btrfs: move struct reserve_ticket definition to space-info.c
      btrfs: fix leaf leak in an error path in btrfs_del_items()
      btrfs: remove pointless return value update in btrfs_del_items()
      btrfs: add unlikely to critical error in btrfs_extend_item()
      btrfs: always use left leaf variable in __push_leaf_right()
      btrfs: remove duplicated leaf dirty status clearing in __push_leaf_right()
      btrfs: always use right leaf variable in __push_leaf_left()
      btrfs: abort transaction on item count overflow in __push_leaf_left()
      btrfs: update check_skip variable after unlocking current node
      btrfs: use bool type for btrfs_path members used as booleans
      btrfs: use booleans for delalloc arguments and struct find_free_extent_ctl
      btrfs: place all boolean fields together in struct find_free_extent_ctl
      btrfs: use test_and_set_bit() in btrfs_delayed_delete_inode_ref()
      btrfs: remove root argument from btrfs_del_dir_entries_in_log()
      btrfs: reduce arguments to btrfs_del_inode_ref_in_log()
      btrfs: send: add unlikely to all unexpected overflow checks
      btrfs: send: do not allocate memory for xattr data when checking it exists
      btrfs: remove redundant zero/NULL initializations in btrfs_alloc_root()
      btrfs: remove unnecessary inode key in btrfs_log_all_parents()

Gladyshev Ilya (1):
      btrfs: don't generate any code from ASSERT() in release builds

Johannes Thumshirn (1):
      btrfs: zoned: show statistics for zoned filesystems

Josef Bacik (3):
      btrfs: add orig_logical to btrfs_bio for encryption
      btrfs: don't rewrite ret from inode_permission
      btrfs: don't search back for dir inode item in INO_LOOKUP_USER

Mehdi Ben Hadj Khelifa (1):
      btrfs: refactor allocation size calculation in alloc_btrfs_io_context()

Miquel Sabaté Solà (5):
      btrfs: fix double free of qgroup record after failure to add delayed ref head
      btrfs: declare free_ipath() via DEFINE_FREE()
      btrfs: define the AUTO_KFREE/AUTO_KVFREE helper macros
      btrfs: apply the AUTO_K(V)FREE macros throughout the code
      btrfs: add ASSERTs on prealloc in qgroup functions

Omar Sandoval (1):
      btrfs: disable various operations on encrypted inodes

Qu Wenruo (38):
      btrfs: remove unnecessary NULL fs_info check from find_lock_delalloc_range()
      btrfs: introduce a new shutdown state
      btrfs: implement shutdown ioctl
      btrfs: implement remove_bdev and shutdown super operation callbacks
      btrfs: subpage: simplify the PAGECACHE_TAG_TOWRITE handling
      btrfs: scrub: add cancel/pause/removed bg checks for raid56 parity stripes
      btrfs: scrub: cancel the run if the process or fs is being frozen
      btrfs: scrub: cancel the run if there is a pending signal
      btrfs: replace BTRFS_MAX_BIO_SECTORS with BIO_MAX_VECS
      btrfs: headers cleanup to remove unnecessary local includes
      btrfs: remove btrfs_bio::fs_info by extracting it from btrfs_bio::inode
      btrfs: make sure all btrfs_bio::end_io are called in task context
      btrfs: remove btrfs_fs_info::compressed_write_workers
      btrfs: relax btrfs_inode::ordered_tree_lock IRQ locking context
      btrfs: introduce btrfs_bio::async_csum
      btrfs: use kvcalloc for btrfs_bio::csum allocation
      btrfs: make sure extent and csum paths are always released in scrub_raid56_parity_stripe()
      btrfs: scrub: factor out parity scrub code into a helper
      btrfs: raid56: remove sector_ptr::has_paddr member
      btrfs: raid56: move sector_ptr::uptodate into a dedicated bitmap
      btrfs: raid56: remove sector_ptr structure
      btrfs: make btrfs_csum_one_bio() handle bs > ps without large folios
      btrfs: make btrfs_repair_io_failure() handle bs > ps cases without large folios
      btrfs: make read verification handle bs > ps cases without large folios
      btrfs: enable encoded read/write/send for bs > ps cases
      btrfs: scrub: always update btrfs_scrub_progress::last_physical
      btrfs: raid56: add an overview for the btrfs_raid_bio structure
      btrfs: raid56: introduce a new parameter to locate a sector
      btrfs: raid56: prepare generate_pq_vertical() for bs > ps cases
      btrfs: raid56: prepare recover_vertical() to support bs > ps cases
      btrfs: raid56: prepare verify_one_sector() to support bs > ps cases
      btrfs: raid56: prepare verify_bio_data_sectors() to support bs > ps cases
      btrfs: raid56: prepare set_bio_pages_uptodate() to support bs > ps cases
      btrfs: raid56: prepare steal_rbio() to support bs > ps cases
      btrfs: raid56: prepare rbio_bio_add_io_paddr() to support bs > ps cases
      btrfs: raid56: prepare finish_parity_scrub() to support bs > ps cases
      btrfs: raid56: enable bs > ps support
      btrfs: raid56: remove the "_step" infix

Rajeev Tapadia (1):
      btrfs: fix comment in alloc_bitmap() and drop stale TODO

Sun YangKai (6):
      btrfs: more trivial BTRFS_PATH_AUTO_FREE conversions
      btrfs: tests: do trivial BTRFS_PATH_AUTO_FREE conversions
      btrfs: factor out root promotion logic into promote_child_to_root()
      btrfs: optimize balance_level() path reference handling
      btrfs: simplify leaf traversal after path release in btrfs_next_old_leaf()
      btrfs: remove redundant level reset in btrfs_del_items()

Sweet Tea Dorminy (1):
      btrfs: disable verity on encrypted inodes

Xuanqiang Luo (1):
      btrfs: remove redundant refcount check in btrfs_put_transaction()

Zhen Ni (1):
      btrfs: fix incomplete parameter rename in btrfs_decompress()

 fs/btrfs/accessors.h              |   1 +
 fs/btrfs/acl.c                    |  25 +-
 fs/btrfs/backref.c                |  37 +-
 fs/btrfs/backref.h                |   7 +-
 fs/btrfs/bio.c                    | 290 +++++++++----
 fs/btrfs/bio.h                    |  39 +-
 fs/btrfs/block-group.c            |  83 ++--
 fs/btrfs/block-group.h            |   2 +-
 fs/btrfs/block-rsv.c              |  14 +-
 fs/btrfs/btrfs_inode.h            |  20 +-
 fs/btrfs/compression.c            |  47 +--
 fs/btrfs/compression.h            |  15 +-
 fs/btrfs/ctree.c                  | 240 ++++++-----
 fs/btrfs/ctree.h                  |  18 +-
 fs/btrfs/defrag.c                 |   5 +-
 fs/btrfs/delalloc-space.c         |   4 +-
 fs/btrfs/delayed-inode.c          |  26 +-
 fs/btrfs/delayed-ref.c            |  45 +-
 fs/btrfs/dev-replace.c            |   4 +-
 fs/btrfs/dir-item.c               |   4 +-
 fs/btrfs/direct-io.c              |  10 +-
 fs/btrfs/disk-io.c                |  64 ++-
 fs/btrfs/disk-io.h                |   3 +-
 fs/btrfs/extent-tree.c            | 172 ++++----
 fs/btrfs/extent-tree.h            |  27 +-
 fs/btrfs/extent_io.c              |  57 ++-
 fs/btrfs/extent_io.h              |   1 -
 fs/btrfs/extent_map.h             |   3 +-
 fs/btrfs/file-item.c              |  89 ++--
 fs/btrfs/file-item.h              |   4 +-
 fs/btrfs/file.c                   |  32 +-
 fs/btrfs/free-space-cache.c       |  24 +-
 fs/btrfs/free-space-tree.c        |  55 +--
 fs/btrfs/fs.h                     |  36 +-
 fs/btrfs/inode-item.c             |   5 +-
 fs/btrfs/inode.c                  | 194 +++++----
 fs/btrfs/ioctl.c                  | 173 ++++----
 fs/btrfs/messages.c               |   1 +
 fs/btrfs/messages.h               |   3 +-
 fs/btrfs/misc.h                   |   7 +
 fs/btrfs/ordered-data.c           |  74 ++--
 fs/btrfs/print-tree.c             |  16 +-
 fs/btrfs/qgroup.c                 | 182 ++++----
 fs/btrfs/raid-stripe-tree.c       |  18 +-
 fs/btrfs/raid56.c                 | 859 ++++++++++++++++++++++----------------
 fs/btrfs/raid56.h                 | 103 ++++-
 fs/btrfs/reflink.c                |  15 +-
 fs/btrfs/relocation.c             |  85 ++--
 fs/btrfs/root-tree.c              |   4 +-
 fs/btrfs/scrub.c                  | 270 +++++++-----
 fs/btrfs/send.c                   | 113 +++--
 fs/btrfs/space-info.c             | 464 ++++++++++----------
 fs/btrfs/space-info.h             |  43 +-
 fs/btrfs/subpage.c                |  67 ++-
 fs/btrfs/subpage.h                |   1 -
 fs/btrfs/super.c                  |  77 +++-
 fs/btrfs/sysfs.c                  |  58 ++-
 fs/btrfs/sysfs.h                  |   3 +-
 fs/btrfs/tests/extent-io-tests.c  |   3 +-
 fs/btrfs/tests/extent-map-tests.c |   6 +-
 fs/btrfs/tests/qgroup-tests.c     |  16 +-
 fs/btrfs/transaction.c            |  48 ++-
 fs/btrfs/transaction.h            |   4 -
 fs/btrfs/tree-checker.c           |  23 +-
 fs/btrfs/tree-log.c               | 183 ++++----
 fs/btrfs/tree-log.h               |   8 +-
 fs/btrfs/uuid-tree.c              | 120 ++----
 fs/btrfs/verity.c                 |  32 +-
 fs/btrfs/volumes.c                | 199 ++++-----
 fs/btrfs/volumes.h                |  10 +-
 fs/btrfs/xattr.c                  |  41 +-
 fs/btrfs/zoned.c                  |  53 ++-
 fs/btrfs/zoned.h                  |   7 +-
 include/uapi/linux/btrfs.h        |   9 +
 74 files changed, 2788 insertions(+), 2312 deletions(-)

             reply	other threads:[~2025-11-28  1:43 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-28  1:43 David Sterba [this message]
2025-12-04  4:48 ` [GIT PULL] Btrfs updates for 6.19 pr-tracker-bot

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.1764293730.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.