• Linus Torvalds's avatar
    Merge tag 'xfs-5.19-for-linus' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · babf0bb9
    Linus Torvalds authored
    Pull xfs updates from Dave Chinner:
     "This is a big update with lots of new code. The summary below them
      all, so I'll just touch on teh higlights. The two main new features
      are Large Extent Counts and Logged Attribute Replay - these are two
      new foundational features that we are building more complex future
      features on top of.
    
      For upcoming functionality, we need to be able to store hundreds of
      millions of xattrs per inode. The Large Extent Count feature removes
      the limits that prevent this scale of xattr storage, and while we were
      modifying the on disk extent count format we also increased the number
      of data extents we support per inode from 2^32 to 2^47.
    
      We also need to be able to modify xattrs as part of larger atomic
      transactions rather than as standalone transactions. The Logged
      Attribute Replay feature introduces the infrastructure that allows us
      to use intents to record the attribute modifications in the journal
      before we start them, hence allowing other atomic transactions to log
      attribute modification intents and then defer the actual modification
      to later. If we then crash, log recovery then guarantees that the
      attribute is replayed in the context of the atomic transaction that
      logged the intent.
    
      A significant chunk of the commits in this merge are for the base
      attribute replay functionality along with fixes, improvements and
      cleanups related to this new functioanlity. Allison deserves a big
      round of thanks for her ongoing work to get this functionality into
      XFS.
    
      There are also many other smaller changes and improvements, so overall
      this is one of the bigger XFS merge requests in some time.
    
      I will be following up next week with another smaller pull request -
      we already have another round of fixes and improvements to the logged
      attribute replay functionality just about ready to go. They'll soak
      and test over the next week, and I'll send a pull request for them
      near the end of the merge window.
    
      Summary:
    
       - support for printk message indexing.
    
       - large extent counts to provide support for up to 2^47 data extents
         and 2^32 attribute extents, allowing us to scale beyond 4 billion
         data extents to billions of xattrs per inode.
    
       - conversion of various flags fields to be consistently declared as
         unsigned bit fields.
    
       - improvements to realtime extent accounting and converts them to
         per-cpu counters to match all the other block and inode accounting.
    
       - reworks core log formatting code to reduce iterations, have a
         shorter, cleaner fast path and generally be easier to understand
         and maintain.
    
       - improvements to rmap btree searches that reduce overhead by up to
         30% resulting in xfs_scrub runtime reductions of 15%.
    
       - improvements to reflink that remove the size limitations in
         remapping operations and greatly reduce the size of transaction
         reservations.
    
       - reworks the minimum log size calculations to allow us to change
         transaction reservations without changing the minimum supported log
         size.
    
       - removal of quota warning support as it has never been used on
         Linux.
    
       - intent whiteouts to allow us to cancel intents that are completed
         entirely in memory rather than having use CPU and disk bandwidth
         formatting and writing them into the journal when it is not
         necessary. This makes rmap, reflink and extent freeing slightly
         more efficient, but provides massive improvements for....
    
       - Logged Attribute Replay feature support. This is a fundamental
         change to the way we modify attributes, laying the foundation for
         future integration of attribute modifications as part of other
         atomic transactional operations the filesystem performs.
    
       - Lots of cleanups and fixes for the logged attribute replay
         functionality"
    
    * tag 'xfs-5.19-for-linus' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (124 commits)
      xfs: can't use kmem_zalloc() for attribute buffers
      xfs: detect empty attr leaf blocks in xfs_attr3_leaf_verify
      xfs: ATTR_REPLACE algorithm with LARP enabled needs rework
      xfs: use XFS_DA_OP flags in deferred attr ops
      xfs: remove xfs_attri_remove_iter
      xfs: switch attr remove to xfs_attri_set_iter
      xfs: introduce attr remove initial states into xfs_attr_set_iter
      xfs: xfs_attr_set_iter() does not need to return EAGAIN
      xfs: clean up final attr removal in xfs_attr_set_iter
      xfs: remote xattr removal in xfs_attr_set_iter() is conditional
      xfs: XFS_DAS_LEAF_REPLACE state only needed if !LARP
      xfs: split remote attr setting out from replace path
      xfs: consolidate leaf/node states in xfs_attr_set_iter
      xfs: kill XFS_DAC_LEAF_ADDNAME_INIT
      xfs: separate out initial attr_set states
      xfs: don't set quota warning values
      xfs: remove warning counters from struct xfs_dquot_res
      xfs: remove quota warning limit from struct xfs_quota_limits
      xfs: rework deferred attribute operation setup
      xfs: make xattri_leaf_bp more useful
      ...
    babf0bb9
xfs_log_cil.c 50.5 KB