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.13
Date: Wed, 13 Nov 2024 19:13:03 +0100 [thread overview]
Message-ID: <cover.1731515050.git.dsterba@suse.com> (raw)
Hi,
please pull the following updates for btrfs.
Changes outside of btrfs: add io_uring command flag to track a dying
task (the rest will go via the block git tree).
User visible changes:
- wire encoded read (ioctl) to io_uring commands, this can be used on
itself, in the future this will allow 'send' to be asynchronous
- as a consequence, the encoded read ioctl can also work in
non-blocking mode
- new ioctl to wait for cleaned subvolumes, no need to use the generic
and root-only SEARCH_TREE ioctl, will be used by "btrfs subvol sync"
- recognize different paths/symlinks for the same devices and don't
report them during rescanning, this can be observed with LVM or DM
- seeding device use case change, the sprout device (the one capturing
new writes) will not clear the read-only status of the super block;
this prevents accumulating space from deleted snapshots
Performance improvements:
- reduce lock contention when traversing extent buffers
- reduce extent tree lock contention when searching for inline backref
- switch from rb-trees to xarray for delayed ref tracking, improvements
due to better cache locality, branching factors and more compact data
structures
- enable extent map shrinker again (prevent memory exhaustion under
some types of IO load), reworked to run in a single worker thread
(there used to be problems causing long stalls under memory pressure)
Core changes:
- raid-stripe-tree feature updates
- make device replace and scrub work
- implement partial deletion of stripe extents
- new selftests
- split the config option BTRFS_DEBUG and add EXPERIMENTAL for features
that are experimental or with known problems so we don't misuse
debugging config for that
- subpage mode updates (sector < page)
- update compression implementations
- update writepage, writeback
- continued folio API conversions
- buffered writes
- make buffered write copy one page at a time, preparatory work for
future integration with large folios, may cause performance drop
- proper locking of root item regarding starting send
- error handling improvements
- code cleanups and refactoring
- dead code removal
- unused parameter reduction
- lockdep assertions
----------------------------------------------------------------
The following changes since commit 2d5404caa8c7bb5c4e0435f94b28834ae5456623:
Linux 6.12-rc7 (2024-11-10 14:19:35 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux.git tags/for-6.13-tag
for you to fetch changes up to e82c936293aafb4f33b153c684c37291b3eed377:
btrfs: send: check for read-only send root under critical section (2024-11-11 14:34:23 +0100)
----------------------------------------------------------------
Anand Jain (1):
btrfs: use filemap_get_folio() helper
Boris Burkov (1):
btrfs: do not clear read-only when adding sprout device
Christoph Hellwig (1):
btrfs: fix a typo in btrfs_use_zone_append
David Sterba (26):
btrfs: zstd: assert the timer pointer in callback
btrfs: drop unused parameter path from btrfs_tree_mod_log_rewind()
btrfs: drop unused parameter ctx from batch_delete_dir_index_items()
btrfs: drop unused parameter fs_info from wait_reserve_ticket()
btrfs: drop unused parameter fs_info from do_reclaim_sweep()
btrfs: send: drop unused parameter num from iterate_inode_ref_t callbacks
btrfs: send: drop unused parameter index from iterate_inode_ref_t callbacks
btrfs: scrub: drop unused parameter sctx from scrub_submit_extent_sector_read()
btrfs: drop unused parameter map from scrub_simple_mirror()
btrfs: qgroup: drop unused parameter fs_info from __del_qgroup_rb()
btrfs: drop unused transaction parameter from btrfs_qgroup_add_swapped_blocks()
btrfs: lzo: drop unused paramter level from lzo_alloc_workspace()
btrfs: drop unused parameter argp from btrfs_ioctl_quota_rescan_wait()
btrfs: drop unused parameter inode from read_inline_extent()
btrfs: drop unused parameter offset from __cow_file_range_inline()
btrfs: drop unused parameter file_offset from btrfs_encoded_read_regular_fill_pages()
btrfs: drop unused parameter iov_iter from btrfs_write_check()
btrfs: drop unused parameter refs from visit_node_for_delete()
btrfs: drop unused parameter mask from try_release_extent_state()
btrfs: drop unused parameter fs_info from folio_range_has_eb()
btrfs: drop unused parameter options from open_ctree()
btrfs: drop unused parameter data from btrfs_fill_super()
btrfs: drop unused parameter transaction from alloc_log_tree()
btrfs: drop unused parameter fs_info from btrfs_match_dir_item_name()
btrfs: drop unused parameter level from alloc_heuristic_ws()
btrfs: add new ioctl to wait for cleaned subvolumes
Dr. David Alan Gilbert (3):
btrfs: remove unused btrfs_free_squota_rsv()
btrfs: remove unused btrfs_is_parity_mirror()
btrfs: remove unused btrfs_try_tree_write_lock()
Filipe Manana (40):
btrfs: qgroups: remove bytenr field from struct btrfs_qgroup_extent_record
btrfs: store fs_info in a local variable at btrfs_qgroup_trace_extent_post()
btrfs: remove unnecessary delayed refs locking at btrfs_qgroup_trace_extent()
btrfs: always use delayed_refs local variable at btrfs_qgroup_trace_extent()
btrfs: remove pointless initialization at btrfs_qgroup_trace_extent()
btrfs: qgroup: run delayed iputs after ordered extent completion
btrfs: add and use helper to remove extent map from its inode's tree
btrfs: make the extent map shrinker run asynchronously as a work queue job
btrfs: simplify tracking progress for the extent map shrinker
btrfs: rename extent map shrinker members from struct btrfs_fs_info
btrfs: re-enable the extent map shrinker
btrfs: remove redundant level argument from read_block_for_search()
btrfs: simplify arguments for btrfs_verify_level_key()
btrfs: remove redundant initializations for struct btrfs_tree_parent_check
btrfs: remove local generation variable from read_block_for_search()
btrfs: remove BUG_ON() at btrfs_destroy_delayed_refs()
btrfs: move btrfs_destroy_delayed_refs() to delayed-ref.c
btrfs: remove fs_info parameter from btrfs_destroy_delayed_refs()
btrfs: remove fs_info parameter from btrfs_cleanup_one_transaction()
btrfs: remove duplicated code to drop delayed ref during transaction abort
btrfs: use helper to find first ref head at btrfs_destroy_delayed_refs()
btrfs: remove num_entries atomic counter from delayed ref root
btrfs: change return type of btrfs_delayed_ref_lock() to boolean
btrfs: simplify obtaining a delayed ref head
btrfs: move delayed ref head unselection to delayed-ref.c
btrfs: pass fs_info to functions that search for delayed ref heads
btrfs: pass fs_info to btrfs_delete_ref_head()
btrfs: assert delayed refs lock is held at find_ref_head()
btrfs: assert delayed refs lock is held at find_first_ref_head()
btrfs: assert delayed refs lock is held at add_delayed_ref_head()
btrfs: add comments regarding locking to struct btrfs_delayed_ref_root
btrfs: track delayed ref heads in an xarray
btrfs: remove no longer used delayed ref head search functionality
btrfs: update stale comment for struct btrfs_delayed_ref_node::add_list
btrfs: remove hole from struct btrfs_delayed_node
btrfs: simplify logic to decrement snapshot counter at btrfs_mksnapshot()
btrfs: fix warning on PTR_ERR() against NULL device at btrfs_control_ioctl()
btrfs: remove check for NULL fs_info at btrfs_folio_end_lock_bitmap()
btrfs: send: check for dead send root under critical section
btrfs: send: check for read-only send root under critical section
Haisu Wang (1):
btrfs: simplify range tracking in cow_file_range()
Johannes Thumshirn (8):
btrfs: don't take dev_replace rwsem on task already holding it
btrfs: remove code duplication in ordered extent finishing
btrfs: tests: add selftests for raid-stripe-tree
btrfs: handle empty list of NOCOW ordered extents with checksum list
btrfs: return ENODATA in case RST lookup fails
btrfs: scrub: skip initial RST lookup errors
btrfs: implement partial deletion of RAID stripe extents
btrfs: tests: implement case for partial RAID stripe-tree delete
Leo Martins (2):
btrfs: push cleanup into btrfs_read_locked_inode()
btrfs: remove conditional path allocation in btrfs_read_locked_inode()
Mark Harmstone (8):
btrfs: fix wrong sizeof in btrfs_do_encoded_write()
btrfs: remove pointless iocb::ki_pos addition in btrfs_encoded_read()
btrfs: change btrfs_encoded_read() so that reading of extent is done by caller
btrfs: don't sleep in btrfs_encoded_read() if IOCB_NOWAIT is set
btrfs: move priv off stack in btrfs_encoded_read_regular_fill_pages()
btrfs: add io_uring command for encoded reads (ENCODED_READ ioctl)
btrfs: add struct io_btrfs_cmd as type for io_uring_cmd_to_pdu()
btrfs: avoid superfluous calls to free_extent_map() in btrfs_encoded_read()
Pavel Begunkov (1):
io_uring/cmd: let cmds to know about dying task
Qu Wenruo (21):
btrfs: make assert_rbio() to only check CONFIG_BTRFS_ASSERT
btrfs: split out CONFIG_BTRFS_EXPERIMENTAL from CONFIG_BTRFS_DEBUG
btrfs: zlib: make the compression path to handle sector size < page size
btrfs: zstd: make the compression path to handle sector size < page size
btrfs: compression: add an ASSERT() to ensure the read-in length is sane
btrfs: wait for writeback if sector size is smaller than page size
btrfs: make extent_range_clear_dirty_for_io() to handle sector size < page size cases
btrfs: do not assume the full page range is not dirty in extent_writepage_io()
btrfs: move the delalloc range bitmap search into extent_io.c
btrfs: mark all dirty sectors as locked inside writepage_delalloc()
btrfs: allow compression even if the range is not page aligned
btrfs: avoid unnecessary device path update for the same device
btrfs: canonicalize the device path before adding it
btrfs: remove the dirty_page local variable
btrfs: simplify the page uptodate preparation for prepare_pages()
btrfs: remove btrfs_set_range_writeback()
btrfs: remove unused btrfs_folio_start_writer_lock()
btrfs: unify to use writer locks for subpage locking
btrfs: rename btrfs_folio_(set|start|end)_writer_lock()
btrfs: make buffered write to copy one page a time
btrfs: convert btrfs_buffered_write() to use folios
Riyan Dhiman (1):
btrfs: remove redundant stop_loop variable in scrub_stripe()
Robbie Ko (2):
btrfs: reduce lock contention when eb cache miss for btree search
btrfs: reduce extent tree lock contention when searching for inline backref
Shen Lichuan (1):
btrfs: correct typos in multiple comments across various files
Thorsten Blum (1):
btrfs: use str_yes_no() helper function in btrfs_dump_free_space()
Youling Tang (1):
btrfs: remove unused page_to_inode and page_to_fs_info macros
fs/btrfs/Kconfig | 26 ++
fs/btrfs/Makefile | 3 +-
fs/btrfs/backref.c | 3 +-
fs/btrfs/bio.c | 2 +-
fs/btrfs/block-group.c | 2 +-
fs/btrfs/btrfs_inode.h | 15 +-
fs/btrfs/compression.c | 14 +-
fs/btrfs/compression.h | 2 +-
fs/btrfs/ctree.c | 148 +++++----
fs/btrfs/delayed-inode.h | 2 +-
fs/btrfs/delayed-ref.c | 327 +++++++++++--------
fs/btrfs/delayed-ref.h | 64 ++--
fs/btrfs/dev-replace.c | 4 +-
fs/btrfs/dir-item.c | 11 +-
fs/btrfs/dir-item.h | 3 +-
fs/btrfs/direct-io.c | 2 +-
fs/btrfs/disk-io.c | 93 +-----
fs/btrfs/disk-io.h | 6 +-
fs/btrfs/extent-tree.c | 104 +++---
fs/btrfs/extent_io.c | 111 +++++--
fs/btrfs/extent_map.c | 122 ++++----
fs/btrfs/extent_map.h | 3 +-
fs/btrfs/fiemap.c | 6 +-
fs/btrfs/file.c | 351 ++++++++-------------
fs/btrfs/file.h | 7 +-
fs/btrfs/free-space-cache.c | 22 +-
fs/btrfs/fs.h | 16 +-
fs/btrfs/inode.c | 495 +++++++++++++++--------------
fs/btrfs/ioctl.c | 478 +++++++++++++++++++++++++++-
fs/btrfs/ioctl.h | 2 +
fs/btrfs/locking.c | 15 -
fs/btrfs/locking.h | 1 -
fs/btrfs/lzo.c | 2 +-
fs/btrfs/qgroup.c | 90 +++---
fs/btrfs/qgroup.h | 17 +-
fs/btrfs/raid-stripe-tree.c | 92 +++++-
fs/btrfs/raid-stripe-tree.h | 5 +
fs/btrfs/raid56.c | 3 +-
fs/btrfs/relocation.c | 2 +-
fs/btrfs/scrub.c | 37 +--
fs/btrfs/send.c | 61 ++--
fs/btrfs/send.h | 2 +-
fs/btrfs/space-info.c | 12 +-
fs/btrfs/subpage.c | 204 ++----------
fs/btrfs/subpage.h | 39 +--
fs/btrfs/super.c | 33 +-
fs/btrfs/sysfs.c | 4 +-
fs/btrfs/tests/btrfs-tests.c | 4 +
fs/btrfs/tests/btrfs-tests.h | 2 +
fs/btrfs/tests/raid-stripe-tree-tests.c | 538 ++++++++++++++++++++++++++++++++
fs/btrfs/transaction.c | 8 +-
fs/btrfs/transaction.h | 2 +-
fs/btrfs/tree-checker.c | 16 +-
fs/btrfs/tree-checker.h | 4 +-
fs/btrfs/tree-log.c | 3 +-
fs/btrfs/tree-mod-log.c | 1 -
fs/btrfs/tree-mod-log.h | 1 -
fs/btrfs/volumes.c | 163 ++++++++--
fs/btrfs/volumes.h | 11 +-
fs/btrfs/xattr.c | 5 +-
fs/btrfs/zlib.c | 2 +-
fs/btrfs/zoned.c | 4 +-
fs/btrfs/zstd.c | 4 +-
include/linux/io_uring_types.h | 1 +
include/trace/events/btrfs.h | 39 +--
include/uapi/linux/btrfs.h | 25 ++
io_uring/uring_cmd.c | 6 +-
67 files changed, 2470 insertions(+), 1432 deletions(-)
create mode 100644 fs/btrfs/tests/raid-stripe-tree-tests.c
next reply other threads:[~2024-11-13 18:13 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-13 18:13 David Sterba [this message]
2024-11-19 1:09 ` [GIT PULL] Btrfs updates for 6.13 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.1731515050.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.