• Linus Torvalds's avatar
    Merge tag 'bcachefs-2024-04-15' of https://evilpiepirate.org/git/bcachefs · cef27048
    Linus Torvalds authored
    Pull yet more bcachefs fixes from Kent Overstreet:
     "This gets recovery working again for the affected user I've been
      working with, and I'm still waiting to hear back on other bug reports
      but should fix it for everyone else who's been having issues with
      recovery.
    
       - Various recovery fixes:
    
           - fixes for the btree_insert_entry being resized on path
             allocation btree_path array recently became dynamically
             resizable, and btree_insert_entry along with it; this was being
             observed during journal replay, when write buffer btree updates
             don't use the write buffer and instead use the normal btree
             update path
    
           - multiple fixes for deadlock in recovery when we need to do lots
             of btree node merges; excessive merges were clocking up the
             whole pipeline
    
           - write buffer path now correctly does btree node merges when
             needed
    
           - fix failure to go RW when superblock indicates recovery passes
             needed (i.e. to complete an unfinished upgrade)
    
       - Various unsafety fixes - test case contributed by a user who had
         two drives out of a six drive array write out a whole bunch of
         garbage after power failure
    
       - New (tiny) on disk format feature: since it appears the btree node
         scan tool will be a more regular thing (crappy hardware, user
         error) - this adds a 64 bit per-device bitmap of regions that have
         ever had btree nodes.
    
       - A path->should_be_locked fix, from a larger patch series tightening
         up invariants and assertions around btree transaction and path
         locking state.
    
         This particular fix prevents us from keeping around btree_paths
         that are no longer needed"
    
    * tag 'bcachefs-2024-04-15' of https://evilpiepirate.org/git/bcachefs: (24 commits)
      bcachefs: set_btree_iter_dontneed also clears should_be_locked
      bcachefs: fix error path of __bch2_read_super()
      bcachefs: Check for backpointer bucket_offset >= bucket size
      bcachefs: bch_member.btree_allocated_bitmap
      bcachefs: sysfs internal/trigger_journal_flush
      bcachefs: Fix bch2_btree_node_fill() for !path
      bcachefs: add safety checks in bch2_btree_node_fill()
      bcachefs: Interior known are required to have known key types
      bcachefs: add missing bounds check in __bch2_bkey_val_invalid()
      bcachefs: Fix btree node merging on write buffer btrees
      bcachefs: Disable merges from interior update path
      bcachefs: Run merges at BCH_WATERMARK_btree
      bcachefs: Fix missing write refs in fs fio paths
      bcachefs: Fix deadlock in journal replay
      bcachefs: Go rw if running any explicit recovery passes
      bcachefs: Standardize helpers for printing enum strs with bounds checks
      bcachefs: don't queue btree nodes for rewrites during scan
      bcachefs: fix race in bch2_btree_node_evict()
      bcachefs: fix unsafety in bch2_stripe_to_text()
      bcachefs: fix unsafety in bch2_extent_ptr_to_text()
      ...
    cef27048
super-io.c 36.1 KB