[GIT PULL] bcachefs

Kent Overstreet
2024-11-15T20:35:23Z

Hi Linus, here's the main bcachefs pull for 6.13

I may send another smaller pull request before the merge window ends,
for backpointers fsck; users will be wanting that, if it's ready in
time.

background - the two most expensive fsck passes by far are checking
backpointers -> extents and extents -> backpointers; we've had users
with 100TB filesystems reporting 24 hour fsck times, and with the self
healing work backpointers -> extents is not necessary anymore, and I have
a trick for extents -> backpointers up my sleeve...

so much to do, so little time...

test dashboard results, for those interested:
https://evilpiepirate.org/~testdashboard/ci?user=kmo&branch=bcachefs-for-upstream

The following changes since commit 840c2fbcc5cd33ba8fab180f09da0bb7f354ea71:

bcachefs: Fix assertion pop in bch2_ptr_swab() (2024-11-12 03:46:57 -0500)

are available in the Git repository at:

git://evilpiepirate.org/bcachefs.git tags/bcachefs-2024-11-15

for you to fetch changes up to 86a494c8eef94a7dc21f26b5c85cb10c5040f04c:

bcachefs: Kill bch2_get_next_backpointer() (2024-11-15 00:22:07 -0500)

----------------------------------------------------------------
bcachefs updates for 6.13

- Self healing work:
Allocator and reflink now run the exact same check/repair code that
fsck does at runtime, where applicable.

The long term goal here is to remove inconsistent() errors (that cause
us to go emergency read only) by lifting fsck code up to normal
runtime paths; we should only go emergency read-only if we detect an
inconsistency that was due to a runtime bug - or truly catastrophic
damage (corrupted btree roots/interior nodes).

- Reflink repair no longer deletes reflink pointers: instead we flip an
error bit and log the error, and they can still be deleted by file
deletion. This means a temporary failure to find an indirect extent
(perhaps repaired later by btree node scan) won't result in
unnecessary data loss

- Improvements to rebalance data path option handling: we can now
correctly apply changed filesystem-level io path options to pending
rebalance work, and soon we'll be able to apply file-level io path
option changes to indirect extents.

- and lots of other smaller fixes and cleanups

----------------------------------------------------------------
Alan Huang (1):
bcachefs: Delete dead code

Colin Ian King (1):
bcachefs: remove superfluous ; after statements

Dennis Lam (1):
docs: filesystems: bcachefs: fixed some spelling mistakes in the bcachefs coding style page

Eric Biggers (1):
bcachefs: Explicitly select CRYPTO from BCACHEFS_FS

Hongbo Li (2):
bcachefs: remove write permission for gc_gens_pos sysfs interface
bcachefs: use attribute define helper for sysfs attribute

Integral (1):
bcachefs: add support for true/false & yes/no in bool-type options

Kent Overstreet (76):
bcachefs: kill retry_estale() in bch2_ioctl_subvolume_create()
Merge branch 'bcachefs-kill-retry-estale' into HEAD
bcachefs: Fix racy use of jiffies
bcachefs: bch2_inode_should_have_bp -> bch2_inode_should_have_single_bp
bcachefs: remove_backpointer() now uses dirent_get_by_pos()
bcachefs: __bch2_key_has_snapshot_overwrites uses for_each_btree_key_reverse_norestart()
bcachefs: rcu_pending: don't invoke __call_rcu() under lock
bcachefs: bch_verbose_ratelimited
bcachefs: Pull disk accounting hooks out of trans_commit.c
bcachefs: Remove unnecessary peek_slot()
bcachefs: kill btree_trans_restart_nounlock()
bcachefs: add more path idx debug asserts
bcachefs: bch2_run_explicit_recovery_pass() returns different error when not in recovery
bcachefs: lru, accounting are alloc btrees
bcachefs: Add locking for bch_fs.curr_recovery_pass
bcachefs: bch2_btree_lost_data() now uses run_explicit_rceovery_pass_persistent()
bcachefs: improved bkey_val_copy()
bcachefs: Factor out jset_entry_log_msg_bytes()
bcachefs: better error message in check_snapshot_tree()
bcachefs: Avoid bch2_btree_id_str()
bcachefs: Refactor new stripe path to reduce dependencies on ec_stripe_head
bcachefs: -o norecovery now bails out of recovery earlier
bcachefs: bch2_journal_meta() takes ref on c->writes
bcachefs: Fix warning about passing flex array member by value
bcachefs: Add block plugging to read paths
bcachefs: Add version check for bch_btree_ptr_v2.sectors_written validate
bcachefs: avoid 'unsigned flags'
bcachefs: use bch2_data_update_opts_to_text() in trace_move_extent_fail()
bcachefs: bch2_io_opts_fixups()
bcachefs: small cleanup for extent ptr bitmasks
bcachefs: kill bch2_bkey_needs_rebalance()
bcachefs: kill __bch2_bkey_sectors_need_rebalance()
bcachefs: rename bch_extent_rebalance fields to match other opts structs
bcachefs: io_opts_to_rebalance_opts()
bcachefs: Add bch_io_opts fields for indicating whether the opts came from the inode
bcachefs: copygc_enabled, rebalance_enabled now opts.h options
bcachefs: bch2_prt_csum_opt()
bcachefs: New bch_extent_rebalance fields
bcachefs: bch2_write_inode() now checks for changing rebalance options
bcachefs: get_update_rebalance_opts()
bcachefs: Simplify option logic in rebalance
bcachefs: Improve trace_rebalance_extent
bcachefs: Move bch_extent_rebalance code to rebalance.c
bcachefs: Add assert for use of journal replay keys for updates
bcachefs: Kill BCH_TRANS_COMMIT_lazy_rw
bcachefs: Improved check_topology() assert
bcachefs: Fix unhandled transaction restart in evacuate_bucket()
bcachefs: Assert we're not in a restart in bch2_trans_put()
bcachefs: Better in_restart error
bcachefs: bch2_trans_verify_not_unlocked_or_in_restart()
bcachefs: Assert that we're not violating key cache coherency rules
bcachefs: Rename btree_iter_peek_upto() -> btree_iter_peek_max()
bcachefs: Simplify btree_iter_peek() filter_snapshots
bcachefs: Kill unnecessary iter_rewind() in bkey_get_empty_slot()
bcachefs: Move fsck ioctl code to fsck.c
bcachefs: Add support for FS_IOC_GETFSUUID
bcachefs: Add support for FS_IOC_GETFSSYSFSPATH
bcachefs: Don't use page allocator for sb_read_scratch
bcachefs: Fix shutdown message
bcachefs: delete dead code
bcachefs: bch2_btree_bit_mod_iter()
bcachefs: Delete dead code from bch2_discard_one_bucket()
bcachefs: lru errors are expected when reconstructing alloc
bcachefs: Kill FSCK_NEED_FSCK
bcachefs: Reserve 8 bits in bch_reflink_p
bcachefs: Reorganize reflink.c a bit
bcachefs: Don't delete reflink pointers to missing indirect extents
bcachefs: kill inconsistent err in invalidate_one_bucket()
bcachefs: rework bch2_bucket_alloc_freelist() freelist iteration
bcachefs: try_alloc_bucket() now uses bch2_check_discard_freespace_key()
bcachefs: bch2_bucket_do_index(): inconsistent_err -> fsck_err
bcachefs: discard_one_bucket() now uses need_discard_or_freespace_err()
bcachefs: Implement bch2_btree_iter_prev_min()
bcachefs: peek_prev_min(): Search forwards for extents, snapshots
bcachefs: Delete backpointers check in try_alloc_bucket()
bcachefs: Kill bch2_get_next_backpointer()

Thomas Bertschinger (1):
bcachefs: move bch2_xattr_handlers to .rodata

Thorsten Blum (6):
bcachefs: Remove duplicate included headers
bcachefs: Use FOREACH_ACL_ENTRY() macro to iterate over acl entries
bcachefs: Use str_write_read() helper function
bcachefs: Use str_write_read() helper in ec_block_endio()
bcachefs: Use str_write_read() helper in write_super_endio()
bcachefs: Annotate struct bucket_gens with __counted_by()

Youling Tang (4):
bcachefs: Correct the description of the '--bucket=size' options
bcachefs: Removes NULL pointer checks for __filemap_get_folio return values
bcachefs: Remove redundant initialization in bch2_vfs_inode_init()
bcachefs: Simplify code in bch2_dev_alloc()

Documentation/filesystems/bcachefs/CodingStyle.rst | 2 +-
fs/bcachefs/Kconfig | 1 +
fs/bcachefs/acl.c | 11 +-
fs/bcachefs/alloc_background.c | 286 +++++-------
fs/bcachefs/alloc_background.h | 2 +
fs/bcachefs/alloc_foreground.c | 154 ++-----
fs/bcachefs/backpointers.c | 149 +++---
fs/bcachefs/backpointers.h | 11 +-
fs/bcachefs/bbpos.h | 2 +-
fs/bcachefs/bcachefs.h | 18 +-
fs/bcachefs/bcachefs_format.h | 15 +-
fs/bcachefs/btree_cache.c | 37 +-
fs/bcachefs/btree_cache.h | 3 +-
fs/bcachefs/btree_gc.c | 141 ++----
fs/bcachefs/btree_io.c | 13 +-
fs/bcachefs/btree_iter.c | 499 +++++++++++++--------
fs/bcachefs/btree_iter.h | 105 ++---
fs/bcachefs/btree_journal_iter.c | 55 ++-
fs/bcachefs/btree_journal_iter.h | 4 +-
fs/bcachefs/btree_key_cache.c | 13 +-
fs/bcachefs/btree_locking.h | 2 +-
fs/bcachefs/btree_node_scan.c | 10 +-
fs/bcachefs/btree_trans_commit.c | 79 +---
fs/bcachefs/btree_types.h | 3 +
fs/bcachefs/btree_update.c | 55 ++-
fs/bcachefs/btree_update.h | 28 +-
fs/bcachefs/btree_update_interior.c | 71 +--
fs/bcachefs/btree_update_interior.h | 2 +-
fs/bcachefs/buckets.c | 43 +-
fs/bcachefs/buckets_types.h | 2 +-
fs/bcachefs/chardev.c | 219 +--------
fs/bcachefs/checksum.h | 2 +-
fs/bcachefs/data_update.c | 67 ++-
fs/bcachefs/debug.c | 4 +-
fs/bcachefs/dirent.c | 4 +-
fs/bcachefs/disk_accounting.c | 13 +-
fs/bcachefs/disk_accounting.h | 38 ++
fs/bcachefs/ec.c | 244 +++++-----
fs/bcachefs/errcode.h | 6 +-
fs/bcachefs/error.c | 28 +-
fs/bcachefs/error.h | 38 +-
fs/bcachefs/extent_update.c | 4 +-
fs/bcachefs/extents.c | 231 +++-------
fs/bcachefs/extents.h | 9 -
fs/bcachefs/extents_format.h | 15 +-
fs/bcachefs/fs-io-buffered.c | 26 +-
fs/bcachefs/fs-io-direct.c | 5 +
fs/bcachefs/fs-io-pagecache.c | 4 +-
fs/bcachefs/fs-io.c | 10 +-
fs/bcachefs/fs-ioctl.c | 7 +-
fs/bcachefs/fs.c | 42 +-
fs/bcachefs/fsck.c | 260 ++++++++++-
fs/bcachefs/fsck.h | 3 +
fs/bcachefs/inode.c | 21 +-
fs/bcachefs/inode.h | 10 +-
fs/bcachefs/io_misc.c | 10 +-
fs/bcachefs/io_read.c | 55 +--
fs/bcachefs/io_read.h | 28 +-
fs/bcachefs/io_write.c | 6 +-
fs/bcachefs/journal.c | 27 +-
fs/bcachefs/journal_io.c | 10 +-
fs/bcachefs/journal_reclaim.c | 6 +-
fs/bcachefs/lru.c | 2 +-
fs/bcachefs/move.c | 105 +++--
fs/bcachefs/move.h | 5 +-
fs/bcachefs/movinggc.c | 6 +-
fs/bcachefs/opts.c | 24 +-
fs/bcachefs/opts.h | 50 ++-
fs/bcachefs/rcu_pending.c | 2 +
fs/bcachefs/rebalance.c | 266 +++++++++--
fs/bcachefs/rebalance.h | 10 +
fs/bcachefs/rebalance_format.h | 53 +++
fs/bcachefs/rebalance_types.h | 2 -
fs/bcachefs/recovery.c | 103 +++--
fs/bcachefs/recovery.h | 2 +-
fs/bcachefs/recovery_passes.c | 90 +++-
fs/bcachefs/recovery_passes.h | 1 +
fs/bcachefs/reflink.c | 476 +++++++++++++++-----
fs/bcachefs/reflink.h | 7 +
fs/bcachefs/reflink_format.h | 5 +-
fs/bcachefs/sb-errors_format.h | 5 +-
fs/bcachefs/snapshot.c | 42 +-
fs/bcachefs/str_hash.h | 6 +-
fs/bcachefs/subvolume.c | 2 +-
fs/bcachefs/subvolume.h | 12 +-
fs/bcachefs/super-io.c | 10 +-
fs/bcachefs/super-io.h | 2 +
fs/bcachefs/super.c | 24 +-
fs/bcachefs/super.h | 10 -
fs/bcachefs/sysfs.c | 46 +-
fs/bcachefs/tests.c | 26 +-
fs/bcachefs/xattr.c | 11 +-
fs/bcachefs/xattr.h | 2 +-
fs/fs_parser.c | 3 +-
include/linux/fs_parser.h | 2 +
95 files changed, 2578 insertions(+), 2102 deletions(-)
create mode 100644 fs/bcachefs/rebalance_format.h