public inbox for linux-btrfs@vger.kernel.org
 help / color / mirror / Atom feed
* [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