• Linus Torvalds's avatar
    Merge tag 'bcachefs-2024-07-18.2' of https://evilpiepirate.org/git/bcachefs · 720261cf
    Linus Torvalds authored
    Pull bcachefs updates from Kent Overstreet:
    
     - Metadata version 1.8: Stripe sectors accounting, BCH_DATA_unstriped
    
       This splits out the accounting of dirty sectors and stripe sectors in
       alloc keys; this lets us see stripe buckets that still have unstriped
       data in them.
    
       This is needed for ensuring that erasure coding is working correctly,
       as well as completing stripe creation after a crash.
    
     - Metadata version 1.9: Disk accounting rewrite
    
       The previous disk accounting scheme relied heavily on percpu counters
       that were also sharded by outstanding journal buffer; it was fast but
       not extensible or scalable, and meant that all accounting counters
       were recorded in every journal entry.
    
       The new disk accounting scheme stores accounting as normal btree
       keys; updates are deltas until they are flushed by the btree write
       buffer.
    
       This means we have no practical limit on the number of counters, and
       a new tagged union format that's easy to extend.
    
       We now have counters for compression type/ratio, per-snapshot-id
       usage, per-btree-id usage, and pending rebalance work.
    
     - Self healing on read IO/checksum error
    
       Data is now automatically rewritten if we get a read error and then a
       successful retry
    
     - Mount API conversion (thanks to Thomas Bertschinger)
    
     - Better lockdep coverage
    
       Previously, btree node locks were tracked individually by lockdep,
       like any other lock. But we may take _many_ btree node locks
       simultaneously, we easily blow through the limit of 48 locks that
       lockdep can track, leading to lockdep turning itself off.
    
       Tracking each btree node lock individually isn't really necessary
       since we have our own cycle detector for deadlock avoidance and
       centralized tracking of btree node locks, so we now have a single
       lockdep_map in btree_trans for "any btree nodes are locked".
    
     - Some more small incremental work towards online check_allocations
    
     - Lots more debugging improvements
    
     - Fixes, including:
        - undefined behaviour fixes, originally noted as breaking userspace
          LTO builds
        - fix a spurious warning in fsck_err, reported by Marcin
        - fix an integer overflow on trans->nr_updates, also reported by
          Marcin; this broke during deletion of highly fragmented indirect
          extents
    
    * tag 'bcachefs-2024-07-18.2' of https://evilpiepirate.org/git/bcachefs: (120 commits)
      lockdep: Add comments for lockdep_set_no{validate,track}_class()
      bcachefs: Fix integer overflow on trans->nr_updates
      bcachefs: silence silly kdoc warning
      bcachefs: Fix fsck warning about btree_trans not passed to fsck error
      bcachefs: Add an error message for insufficient rw journal devs
      bcachefs: varint: Avoid left-shift of a negative value
      bcachefs: darray: Don't pass NULL to memcpy()
      bcachefs: Kill bch2_assert_btree_nodes_not_locked()
      bcachefs: Rename BCH_WRITE_DONE -> BCH_WRITE_SUBMITTED
      bcachefs: __bch2_read(): call trans_begin() on every loop iter
      bcachefs: show none if label is not set
      bcachefs: drop packed, aligned from bkey_inode_buf
      bcachefs: btree node scan: fall back to comparing by journal seq
      bcachefs: Add lockdep support for btree node locks
      lockdep: lockdep_set_notrack_class()
      bcachefs: Improve copygc_wait_to_text()
      bcachefs: Convert clock code to u64s
      bcachefs: Improve startup message
      bcachefs: Self healing on read IO error
      bcachefs: Make read_only a mount option again, but hidden
      ...
    720261cf
fs.c 53.3 KB