• Linus Torvalds's avatar
    Merge tag 'xfs-6.3-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · c0927a7a
    Linus Torvalds authored
    Pull moar xfs updates from Darrick Wong:
     "This contains a fix for a deadlock in the allocator. It continues the
      slow march towards being able to offline AGs, and it refactors the
      interface to the xfs allocator to be less indirection happy.
    
      Summary:
    
       - Fix a deadlock in the free space allocator due to the AG-walking
         algorithm forgetting to follow AG-order locking rules
    
       - Make the inode allocator prefer existing free inodes instead of
         failing to allocate new inode chunks when free space is low
    
       - Set minleft correctly when setting allocator parameters for bmap
         changes
    
       - Fix uninitialized variable access in the getfsmap code
    
       - Make a distinction between active and passive per-AG structure
         references. For now, active references are taken to perform some
         work in an AG on behalf of a high level operation; passive
         references are used by lower level code to finish operations
         started by other threads. Eventually this will become part of
         online shrink
    
       - Split out all the different allocator strategies into separate
         functions to move us away from design antipattern of filling out a
         huge structure for various differentish things and issuing a single
         function multiplexing call
    
       - Various cleanups in the filestreams allocator code, which we might
         very well want to deprecate instead of continuing
    
       - Fix a bug with the agi rotor code that was introduced earlier in
         this series"
    
    * tag 'xfs-6.3-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (44 commits)
      xfs: restore old agirotor behavior
      xfs: fix uninitialized variable access
      xfs: refactor the filestreams allocator pick functions
      xfs: return a referenced perag from filestreams allocator
      xfs: pass perag to filestreams tracing
      xfs: use for_each_perag_wrap in xfs_filestream_pick_ag
      xfs: track an active perag reference in filestreams
      xfs: factor out MRU hit case in xfs_filestream_select_ag
      xfs: remove xfs_filestream_select_ag() longest extent check
      xfs: merge new filestream AG selection into xfs_filestream_select_ag()
      xfs: merge filestream AG lookup into xfs_filestream_select_ag()
      xfs: move xfs_bmap_btalloc_filestreams() to xfs_filestreams.c
      xfs: use xfs_bmap_longest_free_extent() in filestreams
      xfs: get rid of notinit from xfs_bmap_longest_free_extent
      xfs: factor out filestreams from xfs_bmap_btalloc_nullfb
      xfs: convert trim to use for_each_perag_range
      xfs: convert xfs_alloc_vextent_iterate_ags() to use perag walker
      xfs: move the minimum agno checks into xfs_alloc_vextent_check_args
      xfs: fold xfs_alloc_ag_vextent() into callers
      xfs: move allocation accounting to xfs_alloc_vextent_set_fsbno()
      ...
    c0927a7a
xfs_inode.c 96.7 KB