• Linus Torvalds's avatar
    Merge tag 'for-6.7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux · d5acbc60
    Linus Torvalds authored
    Pull btrfs updates from David Sterba:
     "New features:
    
       - raid-stripe-tree
    
         New tree for logical file extent mapping where the physical mapping
         may not match on multiple devices. This is now used in zoned mode
         to implement RAID0/RAID1* profiles, but can be used in non-zoned
         mode as well. The support for RAID56 is in development and will
         eventually fix the problems with the current implementation. This
         is a backward incompatible feature and has to be enabled at mkfs
         time.
    
       - simple quota accounting (squota)
    
         A simplified mode of qgroup that accounts all space on the initial
         extent owners (a subvolume), the snapshots are then cheap to create
         and delete. The deletion of snapshots in fully accounting qgroups
         is a known CPU/IO performance bottleneck.
    
         The squota is not suitable for the general use case but works well
         for containers where the original subvolume exists for the whole
         time. This is a backward incompatible feature as it needs extending
         some structures, but can be enabled on an existing filesystem.
    
       - temporary filesystem fsid (temp_fsid)
    
         The fsid identifies a filesystem and is hard coded in the
         structures, which disallows mounting the same fsid found on
         different devices.
    
         For a single device filesystem this is not strictly necessary, a
         new temporary fsid can be generated on mount e.g. after a device is
         cloned. This will be used by Steam Deck for root partition A/B
         testing, or can be used for VM root images.
    
      Other user visible changes:
    
       - filesystems with partially finished metadata_uuid conversion cannot
         be mounted anymore and the uuid fixup has to be done by btrfs-progs
         (btrfstune).
    
      Performance improvements:
    
       - reduce reservations for checksum deletions (with enabled free space
         tree by factor of 4), on a sample workload on file with many
         extents the deletion time decreased by 12%
    
       - make extent state merges more efficient during insertions, reduce
         rb-tree iterations (run time of critical functions reduced by 5%)
    
      Core changes:
    
       - the integrity check functionality has been removed, this was a
         debugging feature and removal does not affect other integrity
         checks like checksums or tree-checker
    
       - space reservation changes:
    
          - more efficient delayed ref reservations, this avoids building up
            too much work or overusing or exhausting the global block
            reserve in some situations
    
          - move delayed refs reservation to the transaction start time,
            this prevents some ENOSPC corner cases related to exhaustion of
            global reserve
    
          - improvements in reducing excessive reservations for block group
            items
    
          - adjust overcommit logic in near full situations, account for one
            more chunk to eventually allocate metadata chunk, this is mostly
            relevant for small filesystems (<10GiB)
    
       - single device filesystems are scanned but not registered (except
         seed devices), this allows temp_fsid to work
    
       - qgroup iterations do not need GFP_ATOMIC allocations anymore
    
       - cleanups, refactoring, reduced data structure size, function
         parameter simplifications, error handling fixes"
    
    * tag 'for-6.7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (156 commits)
      btrfs: open code timespec64 in struct btrfs_inode
      btrfs: remove redundant log root tree index assignment during log sync
      btrfs: remove redundant initialization of variable dirty in btrfs_update_time()
      btrfs: sysfs: show temp_fsid feature
      btrfs: disable the device add feature for temp-fsid
      btrfs: disable the seed feature for temp-fsid
      btrfs: update comment for temp-fsid, fsid, and metadata_uuid
      btrfs: remove pointless empty log context list check when syncing log
      btrfs: update comment for struct btrfs_inode::lock
      btrfs: remove pointless barrier from btrfs_sync_file()
      btrfs: add and use helpers for reading and writing last_trans_committed
      btrfs: add and use helpers for reading and writing fs_info->generation
      btrfs: add and use helpers for reading and writing log_transid
      btrfs: add and use helpers for reading and writing last_log_commit
      btrfs: support cloned-device mount capability
      btrfs: add helper function find_fsid_by_disk
      btrfs: stop reserving excessive space for block group item insertions
      btrfs: stop reserving excessive space for block group item updates
      btrfs: reorder btrfs_inode to fill gaps
      btrfs: open code btrfs_ordered_inode_tree in btrfs_inode
      ...
    d5acbc60
volumes.h 23.1 KB