lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <cover.1747826882.git.dsterba@suse.com>
Date: Wed, 21 May 2025 14:51:16 +0200
From: David Sterba <dsterba@...e.com>
To: torvalds@...ux-foundation.org
Cc: David Sterba <dsterba@...e.com>,
	linux-btrfs@...r.kernel.org,
	linux-kernel@...r.kernel.org
Subject: [GIT PULL] Btrfs updates for 6.16

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

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ