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(-)
next 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.