* [GIT PULL] Btrfs updates for 6.16
@ 2025-05-21 12:51 David Sterba
2025-05-26 21:20 ` pr-tracker-bot
0 siblings, 1 reply; 2+ messages in thread
From: David Sterba @ 2025-05-21 12:51 UTC (permalink / raw)
To: torvalds; +Cc: David Sterba, linux-btrfs, linux-kernel
Hi,
please pull the following updates for btrfs. Apart from numerous
cleanups, there are some performance improvements and one minor mount
option update. There's one more radix-tree conversion (one remaining),
and continued work towards enabling large folios (almost finished).
Thanks.
Performance:
- extent buffer conversion to xarray gains throughput and runtime
improvements on metadata heavy operations doing writeback (sample test
shows +50% throughput, -33% runtime)
- extent io tree cleanups lead to performance improvements by avoiding
unnecessary searches or repeated searches
- more efficient extent unpinning when committing transaction (estimated
run time improvement 3-5%)
User visible changes:
- remove standalone mount option 'nologreplay', deprecated in 5.9,
replacement is 'rescue=nologreplay'
- in scrub, update reporting, add back device stats message after
detected errors (accidentally removed during recent refactoring)
Core:
- convert extent buffer radix tree to xarray
- in subpage mode, move block perfect compression out of experimental
build
- in zoned mode, introduce sub block groups to allow managing special
block groups, like the one for relocation or tree-log, to handle some
corner cases of ENOSPC
- in scrub, simplify bitmaps for block tracking status
- continued preparations for large folios
- remove assertions for folio order 0
- add support where missing: compression, buffered write, defrag, hole
punching, subpage, send
- fix fsync of files with no hard links not persisting deletion
- reject tree blocks which are not nodesize aligned, a precaution from
4.9 times
- move transaction abort calls closer to the error sites
- remove usage of some struct bio_vec internals
- simplifications in extent map
- extent IO cleanups and optimizations
- error handling improvements
- enhanced ASSERT() macro with optional format strings
- cleanups
- remove unused code
- naming unifications, dropped __, added prefix
- merge similar functions
- use common helpers for various data structures
----------------------------------------------------------------
The following changes since commit 088d13246a4672bc03aec664675138e3f5bff68c:
Merge tag 'kbuild-fixes-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild ()
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.16-tag
for you to fetch changes up to eeb133a6341280a1315c12b5b24a42e1fbf35487:
btrfs: move misplaced comment of btrfs_path::keep_locks (2025-05-17 21:15:08 +0200)
----------------------------------------------------------------
Boris Burkov (1):
btrfs: fix broken drop_caches on extent buffer folios
Charles Han (1):
btrfs: update and correct description of btrfs_get_or_create_delayed_node()
Christoph Hellwig (7):
btrfs: remove the alignment checks in end_bbio_data_read()
btrfs: track the next file offset in struct btrfs_bio_ctrl
btrfs: pass a physical address to btrfs_repair_io_failure()
btrfs: move kmapping out of btrfs_check_sector_csum()
btrfs: simplify bvec iteration in index_one_bio()
btrfs: scrub: use virtual addresses directly
btrfs: use bvec_kmap_local() in btrfs_decompress_buf2page()
Daniel Vacek (6):
btrfs: remove unused flag EXTENT_BUFFER_READ_ERR
btrfs: remove unused flag EXTENT_BUFFER_READAHEAD
btrfs: remove unused flag EXTENT_BUFFER_CORRUPT
btrfs: remove unused flag EXTENT_BUFFER_IN_TREE
btrfs: move folio initialization to one place in attach_eb_folio_to_filemap()
btrfs: get rid of goto in alloc_test_extent_buffer()
David Sterba (43):
btrfs: use rb_entry_safe() where possible to simplify code
btrfs: do more trivial BTRFS_PATH_AUTO_FREE conversions
btrfs: use BTRFS_PATH_AUTO_FREE in may_destroy_subvol()
btrfs: use BTRFS_PATH_AUTO_FREE in btrfs_set_inode_index_count()
btrfs: use BTRFS_PATH_AUTO_FREE in can_nocow_extent()
btrfs: use BTRFS_PATH_AUTO_FREE in btrfs_encoded_read_inline()
btrfs: use BTRFS_PATH_AUTO_FREE in btrfs_del_inode_extref()
btrfs: use BTRFS_PATH_AUTO_FREE in btrfs_insert_inode_extref()
btrfs: tree-checker: more unlikely annotations
btrfs: rename iov_iter iterator parameter in btrfs_buffered_write()
btrfs: enhance ASSERT() to take optional format string
btrfs: use verbose ASSERT() in volumes.c
btrfs: add debug build only WARN
btrfs: convert WARN_ON(IS_ENABLED(CONFIG_BTRFS_DEBUG)) to DEBUG_WARN
btrfs: convert ASSERT(0) with handled errors to DEBUG_WARN()
btrfs: use list_first_entry() everywhere
btrfs: remove unused btrfs_io_stripe::length
btrfs: use unsigned types for constants defined as bit shifts
btrfs: merge __setup_root() to btrfs_alloc_root()
btrfs: drop redundant local variable in raid_wait_write_end_io()
btrfs: change return type of btrfs_lookup_bio_sums() to int
btrfs: change return type of btrfs_csum_one_bio() to int
btrfs: change return type of btree_csum_one_bio() to int
btrfs: change return type of btrfs_bio_csum() to int
btrfs: rename ret to status in btrfs_submit_chunk()
btrfs: rename error to ret in btrfs_submit_chunk()
btrfs: simplify reading bio status in end_compressed_writeback()
btrfs: rename ret to status in btrfs_submit_compressed_read()
btrfs: rename ret2 to ret in btrfs_submit_compressed_read()
btrfs: change return type of btrfs_alloc_dummy_sum() to int
btrfs: raid56: rename parameter err to status in endio helpers
btrfs: trivial conversion to return bool instead of int
btrfs: switch int dev_replace_is_ongoing variables/parameters to bool
btrfs: reformat comments in acls_after_inode_item()
btrfs: on unknown chunk allocation policy fallback to regular
btrfs: rename btrfs_discard workqueue to btrfs-discard
btrfs: move transaction aborts to the error site in convert_free_space_to_bitmaps()
btrfs: move transaction aborts to the error site in convert_free_space_to_extents()
btrfs: move transaction aborts to the error site in remove_from_free_space_tree()
btrfs: move transaction aborts to the error site in add_to_free_space_tree()
btrfs: send: remove btrfs_debug() calls
btrfs: update list of features built under experimental config
btrfs: update Kconfig option descriptions
Filipe Manana (87):
btrfs: fix fsync of files with no hard links not persisting deletion
btrfs: remove leftover EXTENT_UPTODATE clear from an inode's io_tree
btrfs: stop searching for EXTENT_DIRTY bit in the excluded extents io tree
btrfs: remove EXTENT_UPTODATE io tree flag
btrfs: update comment for try_release_extent_state()
btrfs: allow folios to be released while ordered extent is finishing
btrfs: pass a pointer to get_range_bits() to cache first search result
btrfs: use clear_extent_bit() at try_release_extent_state()
btrfs: use clear_extent_bits() at chunk_map_device_clear_bits()
btrfs: use clear_extent_bits() instead of clear_extent_bit() where possible
btrfs: simplify last record detection at test_range_bit_exists()
btrfs: fix documentation for tree_search_for_insert()
btrfs: remove redundant check at find_first_extent_bit_state()
btrfs: simplify last record detection at test_range_bit()
btrfs: remove redundant record start offset check at test_range_bit()
btrfs: tracepoints: use btrfs_root_id() to get the id of a root
btrfs: remove extent_io_tree_to_inode() and is_inode_io_tree()
btrfs: add btrfs prefix to trace events for extent state alloc and free
btrfs: add btrfs prefix to main lock, try lock and unlock extent functions
btrfs: add btrfs prefix to dio lock and unlock extent functions
btrfs: rename __lock_extent() and __try_lock_extent()
btrfs: rename the functions to clear bits for an extent range
btrfs: rename set_extent_bit() to include a btrfs prefix
btrfs: rename the functions to search for bits in extent ranges
btrfs: rename the functions to get inode and fs_info from an extent io tree
btrfs: directly grab inode at __btrfs_debug_check_extent_io_range()
btrfs: rename the functions to init and release an extent io tree
btrfs: rename the functions to count, test and get bit ranges in io trees
btrfs: rename free_extent_state() to include a btrfs prefix
btrfs: rename remaining exported functions from extent-io-tree.h
btrfs: remove double underscore prefix from __set_extent_bit()
btrfs: make btrfs_find_contiguous_extent_bit() return bool instead of int
btrfs: tracepoints: add btrfs prefix to names where it's missing
btrfs: tracepoints: remove no longer used tracepoints for eb locking
btrfs: rename exported extent map compression functions
btrfs: rename extent map functions to get block start, end and check if in tree
btrfs: rename functions to allocate and free extent maps
btrfs: rename remaining exported extent map functions
btrfs: rename __lookup_extent_mapping() to remove double underscore prefix
btrfs: rename __tree_search() to remove double underscore prefix
btrfs: remove duplicate error check at btrfs_clear_extent_bit_changeset()
btrfs: exit after state split error at btrfs_clear_extent_bit_changeset()
btrfs: add missing error return to btrfs_clear_extent_bit_changeset()
btrfs: use bools for local variables at btrfs_clear_extent_bit_changeset()
btrfs: avoid extra tree search at btrfs_clear_extent_bit_changeset()
btrfs: simplify last record detection at btrfs_clear_extent_bit_changeset()
btrfs: remove duplicate error check at btrfs_convert_extent_bit()
btrfs: exit after state split error at btrfs_convert_extent_bit()
btrfs: exit after state insertion failure at btrfs_convert_extent_bit()
btrfs: avoid unnecessary next node searches when clearing bits from extent range
btrfs: avoid repeated extent state processing when converting extent bits
btrfs: avoid re-searching tree when converting bits in an extent range
btrfs: simplify last record detection at btrfs_convert_extent_bit()
btrfs: exit after state insertion failure at set_extent_bit()
btrfs: exit after state split error at set_extent_bit()
btrfs: simplify last record detection at set_extent_bit()
btrfs: avoid repeated extent state processing when setting extent bits
btrfs: avoid re-searching tree when setting bits in an extent range
btrfs: remove unnecessary NULL checks before freeing extent state
btrfs: don't BUG_ON() when unpinning extents during transaction commit
btrfs: remove variable to track trimmed bytes at btrfs_finish_extent_commit()
btrfs: make extent unpinning more efficient when committing transaction
btrfs: simplify getting and extracting previous transaction during commit
btrfs: simplify getting and extracting previous transaction at clean_pinned_extents()
btrfs: simplify cow only root list extraction during transaction commit
btrfs: raid56: use list_last_entry() at cache_rbio()
btrfs: simplify extracting delayed node at btrfs_first_delayed_node()
btrfs: simplify extracting delayed node at btrfs_first_prepared_delayed_node()
btrfs: simplify csum list release at btrfs_put_ordered_extent()
btrfs: defrag: use list_last_entry() at defrag_collect_targets()
btrfs: use verbose assert at peek_discard_list()
btrfs: fix qgroup reservation leak on failure to allocate ordered extent
btrfs: check we grabbed inode reference when allocating an ordered extent
btrfs: fold error checks when allocating ordered extent and update comments
btrfs: use boolean for delalloc argument to btrfs_free_reserved_bytes()
btrfs: use boolean for delalloc argument to btrfs_free_reserved_extent()
btrfs: fix invalid data space release when truncating block in NOCOW mode
btrfs: remove superfluous return value check at btrfs_dio_iomap_begin()
btrfs: return real error from __filemap_get_folio() calls
btrfs: simplify error return logic when getting folio at prepare_one_folio()
btrfs: log error codes during failures when writing super blocks
btrfs: fix harmless race getting delayed ref head count when running delayed refs
btrfs: fix wrong start offset for delalloc space release during mmap write
btrfs: pass true to btrfs_delalloc_release_space() at btrfs_page_mkwrite()
btrfs: simplify early error checking in btrfs_page_mkwrite()
btrfs: don't return VM_FAULT_SIGBUS on failure to set delalloc for mmap write
btrfs: use a single variable to track return value at btrfs_page_mkwrite()
Josef Bacik (3):
btrfs: convert the buffer_radix to an xarray
btrfs: set DIRTY and WRITEBACK tags on the buffer_tree
btrfs: use buffer xarray for extent buffer writeback operations
Mark Harmstone (1):
btrfs: fix typo in space info explanation
Naohiro Aota (13):
btrfs: pass btrfs_space_info to btrfs_reserve_data_bytes()
btrfs: pass struct btrfs_inode to btrfs_free_reserved_data_space_noquota()
btrfs: factor out init_space_info() from create_space_info()
btrfs: factor out do_async_reclaim_{data,metadata}_space()
btrfs: factor out check_removing_space_info() from btrfs_free_block_groups()
btrfs: add space_info argument to btrfs_chunk_alloc()
btrfs: add space_info parameter for block group creation
btrfs: introduce btrfs_space_info sub-group
btrfs: introduce tree-log sub-space_info
btrfs: tweak extent/chunk allocation for space_info sub-space
btrfs: use proper data space_info for zoned mode
btrfs: add block reserve for treelog
btrfs: add support for reclaiming from sub-space space_info
Qu Wenruo (32):
btrfs: move block perfect compression out of experimental features
btrfs: remove force_page_uptodate variable from btrfs_buffered_write()
btrfs: cleanup the reserved space inside loop of btrfs_buffered_write()
btrfs: factor out space reservation code from btrfs_buffered_write()
btrfs: factor out the main loop of btrfs_buffered_write() into a helper
btrfs: refactor how we handle reserved space inside copy_one_range()
btrfs: prepare btrfs_buffered_write() for large data folios
btrfs: prepare btrfs_punch_hole_lock_range() for large data folios
btrfs: fix the file offset calculation inside btrfs_decompress_buf2page()
btrfs: send: remove the again label inside put_file_data()
btrfs: send: prepare put_file_data() for large data folios
btrfs: prepare btrfs_page_mkwrite() for large data folios
btrfs: prepare prepare_one_folio() for large data folios
btrfs: prepare end_bbio_data_write() for large data folios
btrfs: subpage: prepare for large data folios
btrfs: zlib: prepare copy_data_into_buffer() for large data folios
btrfs: remove unnecessary early exits in delalloc folio lock and unlock
btrfs: use folio_contains() for EOF detection
btrfs: prepare compression paths for large data folios
btrfs: enable large data folios support for defrag
btrfs: raid56: store a physical address in structure sector_ptr
btrfs: subpage: reject tree blocks which are not nodesize aligned
btrfs: merge btrfs_read_dev_one_super() into btrfs_read_disk_super()
btrfs: get rid of btrfs_read_dev_super()
btrfs: scrub: update device stats when an error is detected
btrfs: scrub: move error reporting members to stack
btrfs: scrub: fix a wrong error type when metadata bytenr mismatches
btrfs: scrub: aggregate small bitmaps into a larger one
btrfs: handle unaligned EOF truncation correctly for subpage cases
btrfs: handle aligned EOF truncation correctly for subpage cases
btrfs: scrub: reduce memory usage of struct scrub_sector_verification
btrfs: remove standalone "nologreplay" mount option
Sun YangKai (1):
btrfs: move misplaced comment of btrfs_path::keep_locks
Yangtao Li (3):
btrfs: reuse exit helper for cleanup in btrfs_bioset_init()
btrfs: simplify return logic from btrfs_delayed_ref_init()
btrfs: remove BTRFS_REF_LAST from enum btrfs_ref_type
fs/btrfs/Kconfig | 32 +-
fs/btrfs/async-thread.c | 3 +-
fs/btrfs/backref.c | 12 +-
fs/btrfs/backref.h | 4 +-
fs/btrfs/bio.c | 55 ++-
fs/btrfs/bio.h | 3 +-
fs/btrfs/block-group.c | 196 ++++----
fs/btrfs/block-group.h | 11 +-
fs/btrfs/block-rsv.c | 11 +
fs/btrfs/block-rsv.h | 1 +
fs/btrfs/btrfs_inode.h | 7 +-
fs/btrfs/compression.c | 75 +--
fs/btrfs/compression.h | 11 +-
fs/btrfs/ctree.h | 2 +-
fs/btrfs/defrag.c | 141 +++---
fs/btrfs/delalloc-space.c | 51 +-
fs/btrfs/delalloc-space.h | 4 +-
fs/btrfs/delayed-inode.c | 73 ++-
fs/btrfs/delayed-ref.c | 9 +-
fs/btrfs/delayed-ref.h | 1 -
fs/btrfs/dev-replace.c | 22 +-
fs/btrfs/dev-replace.h | 2 +-
fs/btrfs/direct-io.c | 75 ++-
fs/btrfs/discard.c | 4 +-
fs/btrfs/disk-io.c | 199 +++-----
fs/btrfs/disk-io.h | 5 +-
fs/btrfs/extent-io-tree.c | 510 +++++++++++---------
fs/btrfs/extent-io-tree.h | 187 ++++----
fs/btrfs/extent-tree.c | 162 ++++---
fs/btrfs/extent-tree.h | 4 +-
fs/btrfs/extent_io.c | 960 ++++++++++++++++++--------------------
fs/btrfs/extent_io.h | 9 +-
fs/btrfs/extent_map.c | 175 ++++---
fs/btrfs/extent_map.h | 45 +-
fs/btrfs/fiemap.c | 9 +-
fs/btrfs/file-item.c | 49 +-
fs/btrfs/file-item.h | 6 +-
fs/btrfs/file.c | 782 +++++++++++++++++--------------
fs/btrfs/free-space-cache.c | 52 +--
fs/btrfs/free-space-tree.c | 62 ++-
fs/btrfs/fs.h | 6 +-
fs/btrfs/inode-item.c | 31 +-
fs/btrfs/inode.c | 680 +++++++++++++++------------
fs/btrfs/ioctl.c | 18 +-
fs/btrfs/locking.c | 8 +-
fs/btrfs/locking.h | 2 +-
fs/btrfs/lzo.c | 5 +-
fs/btrfs/messages.h | 83 +++-
fs/btrfs/ordered-data.c | 73 +--
fs/btrfs/qgroup.c | 55 +--
fs/btrfs/raid56.c | 219 ++++-----
fs/btrfs/reflink.c | 15 +-
fs/btrfs/relocation.c | 112 +++--
fs/btrfs/scrub.c | 458 +++++++++++-------
fs/btrfs/send.c | 88 +---
fs/btrfs/space-info.c | 174 ++++---
fs/btrfs/space-info.h | 12 +-
fs/btrfs/subpage.c | 6 +-
fs/btrfs/super.c | 24 +-
fs/btrfs/sysfs.c | 27 +-
fs/btrfs/tests/btrfs-tests.c | 32 +-
fs/btrfs/tests/extent-io-tests.c | 61 ++-
fs/btrfs/tests/extent-map-tests.c | 102 ++--
fs/btrfs/tests/inode-tests.c | 107 +++--
fs/btrfs/transaction.c | 74 +--
fs/btrfs/tree-checker.c | 22 +-
fs/btrfs/tree-log.c | 66 +--
fs/btrfs/volumes.c | 345 +++++++-------
fs/btrfs/volumes.h | 11 +-
fs/btrfs/zlib.c | 9 +-
fs/btrfs/zoned.c | 28 +-
fs/btrfs/zstd.c | 10 +-
include/trace/events/btrfs.h | 89 ++--
73 files changed, 3791 insertions(+), 3282 deletions(-)
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [GIT PULL] Btrfs updates for 6.16
2025-05-21 12:51 [GIT PULL] Btrfs updates for 6.16 David Sterba
@ 2025-05-26 21:20 ` pr-tracker-bot
0 siblings, 0 replies; 2+ messages in thread
From: pr-tracker-bot @ 2025-05-26 21:20 UTC (permalink / raw)
To: David Sterba; +Cc: torvalds, David Sterba, linux-btrfs, linux-kernel
The pull request you sent on Wed, 21 May 2025 14:51:16 +0200:
> git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.16-tag
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/5e82ed5ca4b510e0ff53af1e12e94e6aa1fe5a93
Thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/prtracker.html
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2025-05-26 21:20 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-21 12:51 [GIT PULL] Btrfs updates for 6.16 David Sterba
2025-05-26 21:20 ` pr-tracker-bot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox