Busy week... We now have journal rewind, which one of the users (the one who didn't have backups) who was bit by the subvolume deletion bug was able to use to fully recover his filesystem.
Going to do some work on the discard path so we can have that as a reliable disaster recovery mechanism. Otherwise, mostly boring repair stuff, some tracepoints for tracking down livelock-ish issues. Alan Huang (6): bcachefs: Don't allocate new memory when mempool is exhausted bcachefs: Fix alloc_req use after free bcachefs: Add missing EBUG_ON bcachefs: Delay calculation of trans->journal_u64s bcachefs: Move bset size check before csum check bcachefs: Fix pool->alloc NULL pointer dereference Bharadwaj Raju (1): bcachefs: don't return fsck_fix for unfixable node errors in __btree_err Kent Overstreet (30): bcachefs: trace_extent_trim_atomic bcachefs: btree iter tracepoints bcachefs: Fix bch2_journal_keys_peek_prev_min() bcachefs: btree_iter: fix updates, journal overlay bcachefs: better __bch2_snapshot_is_ancestor() assert bcachefs: pass last_seq into fs_journal_start() bcachefs: Fix "now allowing incompatible features" message bcachefs: Fix snapshot_key_missing_inode_snapshot repair bcachefs: fsck: fix add_inode() bcachefs: fsck: fix extent past end of inode repair bcachefs: opts.journal_rewind bcachefs: Kill unused tracepoints bcachefs: mark more errors autofix bcachefs: fsck: Improve check_key_has_inode() bcachefs: Call bch2_fs_init_rw() early if we'll be going rw bcachefs: Fix __bch2_inum_to_path() when crossing subvol boundaries bcachefs: fsck: Print path when we find a subvol loop bcachefs: fsck: Fix remove_backpointer() for subvol roots bcachefs: fsck: Fix reattach_inode() for subvol roots bcachefs: fsck: check_directory_structure runs in reverse order bcachefs: fsck: additional diagnostics for reattach_inode() bcachefs: fsck: check_subdir_count logs path bcachefs: fsck: Fix check_path_loop() + snapshots bcachefs: Fix bch2_read_bio_to_text() bcachefs: Fix restart handling in btree_node_scrub_work() bcachefs: fsck: Fix check_directory_structure when no check_dirents bcachefs: fsck: fix unhandled restart in topology repair bcachefs: fsck: Fix oops in key_visible_in_snapshot() bcachefs: fix spurious error in read_btree_roots() bcachefs: Fix missing newlines before ero fs/bcachefs/bcachefs.h | 3 +- fs/bcachefs/btree_gc.c | 8 +- fs/bcachefs/btree_io.c | 74 +++--- fs/bcachefs/btree_iter.c | 169 ++++++++----- fs/bcachefs/btree_journal_iter.c | 64 +++-- fs/bcachefs/btree_journal_iter_types.h | 5 +- fs/bcachefs/btree_trans_commit.c | 18 +- fs/bcachefs/btree_types.h | 1 + fs/bcachefs/btree_update_interior.c | 11 +- fs/bcachefs/btree_update_interior.h | 3 + fs/bcachefs/btree_write_buffer.c | 3 + fs/bcachefs/chardev.c | 29 ++- fs/bcachefs/data_update.c | 1 + fs/bcachefs/errcode.h | 5 - fs/bcachefs/extent_update.c | 13 +- fs/bcachefs/fsck.c | 317 +++++++++++++++++-------- fs/bcachefs/inode.h | 5 + fs/bcachefs/io_read.c | 7 +- fs/bcachefs/journal.c | 18 +- fs/bcachefs/journal.h | 2 +- fs/bcachefs/journal_io.c | 26 +- fs/bcachefs/namei.c | 30 ++- fs/bcachefs/opts.h | 5 + fs/bcachefs/recovery.c | 24 +- fs/bcachefs/recovery_passes.c | 6 +- fs/bcachefs/recovery_passes.h | 9 + fs/bcachefs/sb-errors_format.h | 10 +- fs/bcachefs/snapshot.c | 8 +- fs/bcachefs/super.c | 13 +- fs/bcachefs/super.h | 1 + fs/bcachefs/trace.h | 125 +++------- 31 files changed, 622 insertions(+), 391 deletions(-) -- 2.50.0