• Linus Torvalds's avatar
    Merge tag 'vfs-6.12.blocksize' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs · 171754c3
    Linus Torvalds authored
    Pull vfs blocksize updates from Christian Brauner:
     "This contains the vfs infrastructure as well as the xfs bits to enable
      support for block sizes (bs) larger than page sizes (ps) plus a few
      fixes to related infrastructure.
    
      There has been efforts over the last 16 years to enable enable Large
      Block Sizes (LBS), that is block sizes in filesystems where bs > page
      size. Through these efforts we have learned that one of the main
      blockers to supporting bs > ps in filesystems has been a way to
      allocate pages that are at least the filesystem block size on the page
      cache where bs > ps.
    
      Thanks to various previous efforts it is possible to support bs > ps
      in XFS with only a few changes in XFS itself. Most changes are to the
      page cache to support minimum order folio support for the target block
      size on the filesystem.
    
      A motivation for Large Block Sizes today is to support high-capacity
      (large amount of Terabytes) QLC SSDs where the internal Indirection
      Unit (IU) are typically greater than 4k to help reduce DRAM and so in
      turn cost and space. In practice this then allows different
      architectures to use a base page size of 4k while still enabling
      support for block sizes aligned to the larger IUs by relying on high
      order folios on the page cache when needed.
    
      It also allows to take advantage of the drive's support for atomics
      larger than 4k with buffered IO support in Linux. As described this
      year at LSFMM, supporting large atomics greater than 4k enables
      databases to remove the need to rely on their own journaling, so they
      can disable double buffered writes, which is a feature different cloud
      providers are already enabling through custom storage solutions"
    
    * tag 'vfs-6.12.blocksize' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs: (22 commits)
      Documentation: iomap: fix a typo
      iomap: remove the iomap_file_buffered_write_punch_delalloc return value
      iomap: pass the iomap to the punch callback
      iomap: pass flags to iomap_file_buffered_write_punch_delalloc
      iomap: improve shared block detection in iomap_unshare_iter
      iomap: handle a post-direct I/O invalidate race in iomap_write_delalloc_release
      docs:filesystems: fix spelling and grammar mistakes in iomap design page
      filemap: fix htmldoc warning for mapping_align_index()
      iomap: make zero range flush conditional on unwritten mappings
      iomap: fix handling of dirty folios over unwritten extents
      iomap: add a private argument for iomap_file_buffered_write
      iomap: remove set_memor_ro() on zero page
      xfs: enable block size larger than page size support
      xfs: make the calculation generic in xfs_sb_validate_fsb_count()
      xfs: expose block size in stat
      xfs: use kvmalloc for xattr buffers
      iomap: fix iomap_dio_zero() for fs bs > system page size
      filemap: cap PTE range to be created to allowed zero fill in folio_map_range()
      mm: split a folio in minimum folio order chunks
      readahead: allocate folios with mapping_min_order in readahead
      ...
    171754c3
filemap.c 125 KB