• Linus Torvalds's avatar
    Merge tag 'for-6.4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · 85d7ab24
    Linus Torvalds authored
    Pull btrfs updates from David Sterba:
     "Mostly core changes and cleanups, some notable fixes and two
      performance improvements in directory logging.
    
      The IO path cleanups are removing or refactoring old code, scrub main
      loop has been completely rewritten also refactoring old code.
    
      There are some changes to non-btrfs code, mostly trivial, the cgroup
      punt bio logic is only moved from generic code.
    
      Performance improvements:
    
       - improve logging changes in a directory during one transaction,
         avoid iterating over items and reduce lock contention (fsync time
         4x lower)
    
       - when logging directory entries during one transaction, reduce
         locking of subvolume trees by checking tree-log instead
         (improvement in throughput and latency for concurrent access to a
         subvolume)
    
      Notable fixes:
    
       - dev-replace:
          - properly honor read mode when requested to avoid reading from
            source device
          - target device won't be used for eventual read repair, this is
            unreliable for NODATASUM files
          - when there are unpaired (and unrepairable) metadata during
            replace, exit early with error and don't try to finish whole
            operation
    
       - scrub ioctl properly rejects unknown flags
    
       - fix global block reserve calculations
    
       - fix partial direct io write when there's a page fault in the
         middle, iomap will try to continue with partial request but the
         btrfs part did not match that, this can lead to zeros written
         instead of data
    
      Core changes:
    
       - io path:
          - continued cleanups and refactoring around bio handling
          - extent io submit path simplifications and cleanups
          - flush write path simplifications and cleanups
          - rework logic of passing sync mode of bio, with further cleanups
    
       - rewrite scrub code flow, restructure how the stripes are enumerated
         and verified in a more unified way
    
       - allow to set lower threshold for block group reclaim in debug mode
         to aid zoned mode testing
    
       - remove obsolete time-based delayed ref throttling logic when
         truncating items
    
       - DREW locks are not using percpu variables anymore
    
       - more warning fixes (-Wmaybe-uninitialized)
    
       - u64 division simplifications
    
       - error handling improvements
    
      Non-btrfs code changes:
    
       - push cgroup punt bio logic to btrfs code (there was no other user
         of that), the functionality can be now selected separately by
         BLK_CGROUP_PUNT_BIO
    
       - crc32c_impl removed after removing last uses in btrfs code
    
       - add btrfs_assertfail() to objtool table"
    
    * tag 'for-6.4-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (147 commits)
      btrfs: mark btrfs_assertfail() __noreturn
      btrfs: fix uninitialized variable warnings
      btrfs: use log root when iterating over index keys when logging directory
      btrfs: avoid iterating over all indexes when logging directory
      btrfs: dev-replace: error out if we have unrepaired metadata error during
      btrfs: remove pointless loop at btrfs_get_next_valid_item()
      btrfs: scrub: reject unsupported scrub flags
      btrfs: reinterpret async discard iops_limit=0 as no delay
      btrfs: set default discard iops_limit to 1000
      btrfs: remove unused raid56 functions which were dedicated for scrub
      btrfs: scrub: remove scrub_bio structure
      btrfs: scrub: remove scrub_block and scrub_sector structures
      btrfs: scrub: remove the old scrub recheck code
      btrfs: scrub: remove the old writeback infrastructure
      btrfs: scrub: remove scrub_parity structure
      btrfs: scrub: use scrub_stripe to implement RAID56 P/Q scrub
      btrfs: scrub: switch scrub_simple_mirror() to scrub_stripe infrastructure
      btrfs: scrub: introduce helper to queue a stripe for scrub
      btrfs: scrub: introduce error reporting functionality for scrub_stripe
      btrfs: scrub: introduce a writeback helper for scrub_stripe
      ...
    85d7ab24
check.c 108 KB