• Linus Torvalds's avatar
    Merge tag 'iomap-5.15-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux · 0ee7c3e2
    Linus Torvalds authored
    Pull iomap updates from Darrick Wong:
     "The most notable externally visible change for this cycle is the
      addition of support for reads to inline tail fragments of files, which
      was requested by the erofs developers; and a correction for a kernel
      memory corruption bug if the sysadmin tries to activate a swapfile
      with more pages than the swapfile header suggests.
    
      We also now report writeback completion errors to the file mapping
      correctly, instead of munging all errors into EIO.
    
      Internally, the bulk of the changes are Christoph's patchset to reduce
      the indirect function call count by a third to a half by converting
      iomap iteration from a loop pattern to a generator/consumer pattern.
      As an added bonus, fsdax no longer open-codes iomap apply loops.
    
      Summary:
    
       - Simplify the bio_end_page usage in the buffered IO code.
    
       - Support reading inline data at nonzero offsets for erofs.
    
       - Fix some typos and bad grammar.
    
       - Convert kmap_atomic usage in the inline data read path.
    
       - Add some extra inline data input checking.
    
       - Fix a memory corruption bug stemming from iomap_swapfile_activate
         trying to activate more pages than mm was expecting.
    
       - Pass errnos through the page writeback code so that writeback
         errors are reported correctly instead of being munged to EIO.
    
       - Replace iomap_apply with a open-coded iterator loops to reduce the
         number of indirect calls by a third to a half.
    
       - Refactor the fsdax code to use iomap iterators instead of the
         open-coded iomap_apply code that it had before.
    
       - Format file range iomap tracepoint data in hexadecimal and
         standardize the names used in the pretty-print string"
    
    * tag 'iomap-5.15-merge-4' of git://git.kernel.org/pub/scm/fs/xfs/xfs-linux: (41 commits)
      iomap: standardize tracepoint formatting and storage
      mm/swap: consider max pages in iomap_swapfile_add_extent
      iomap: move loop control code to iter.c
      iomap: constify iomap_iter_srcmap
      fsdax: switch the fault handlers to use iomap_iter
      fsdax: factor out a dax_fault_actor() helper
      fsdax: factor out helpers to simplify the dax fault code
      iomap: rework unshare flag
      iomap: pass an iomap_iter to various buffered I/O helpers
      iomap: remove iomap_apply
      fsdax: switch dax_iomap_rw to use iomap_iter
      iomap: switch iomap_swapfile_activate to use iomap_iter
      iomap: switch iomap_seek_data to use iomap_iter
      iomap: switch iomap_seek_hole to use iomap_iter
      iomap: switch iomap_bmap to use iomap_iter
      iomap: switch iomap_fiemap to use iomap_iter
      iomap: switch __iomap_dio_rw to use iomap_iter
      iomap: switch iomap_page_mkwrite to use iomap_iter
      iomap: switch iomap_zero_range to use iomap_iter
      iomap: switch iomap_file_unshare to use iomap_iter
      ...
    0ee7c3e2
dax.c 46.1 KB