• Linus Torvalds's avatar
    Merge tag 'vfs-6.8.netfs' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs · 16df6e07
    Linus Torvalds authored
    Pull netfs updates from Christian Brauner:
     "This extends the netfs helper library that network filesystems can use
      to replace their own implementations. Both afs and 9p are ported. cifs
      is ready as well but the patches are way bigger and will be routed
      separately once this is merged. That will remove lots of code as well.
    
      The overal goal is to get high-level I/O and knowledge of the page
      cache and ouf of the filesystem drivers. This includes knowledge about
      the existence of pages and folios
    
      The pull request converts afs and 9p. This removes about 800 lines of
      code from afs and 300 from 9p. For 9p it is now possible to do writes
      in larger than a page chunks. Additionally, multipage folio support
      can be turned on for 9p. Separate patches exist for cifs removing
      another 2000+ lines. I've included detailed information in the
      individual pulls I took.
    
      Summary:
    
       - Add NFS-style (and Ceph-style) locking around DIO vs buffered I/O
         calls to prevent these from happening at the same time.
    
       - Support for direct and unbuffered I/O.
    
       - Support for write-through caching in the page cache.
    
       - O_*SYNC and RWF_*SYNC writes use write-through rather than writing
         to the page cache and then flushing afterwards.
    
       - Support for write-streaming.
    
       - Support for write grouping.
    
       - Skip reads for which the server could only return zeros or EOF.
    
       - The fscache module is now part of the netfs library and the
         corresponding maintainer entry is updated.
    
       - Some helpers from the fscache subsystem are renamed to mark them as
         belonging to the netfs library.
    
       - Follow-up fixes for the netfs library.
    
       - Follow-up fixes for the 9p conversion"
    
    * tag 'vfs-6.8.netfs' of gitolite.kernel.org:pub/scm/linux/kernel/git/vfs/vfs: (50 commits)
      netfs: Fix wrong #ifdef hiding wait
      cachefiles: Fix signed/unsigned mixup
      netfs: Fix the loop that unmarks folios after writing to the cache
      netfs: Fix interaction between write-streaming and cachefiles culling
      netfs: Count DIO writes
      netfs: Mark netfs_unbuffered_write_iter_locked() static
      netfs: Fix proc/fs/fscache symlink to point to "netfs" not "../netfs"
      netfs: Rearrange netfs_io_subrequest to put request pointer first
      9p: Use length of data written to the server in preference to error
      9p: Do a couple of cleanups
      9p: Fix initialisation of netfs_inode for 9p
      cachefiles: Fix __cachefiles_prepare_write()
      9p: Use netfslib read/write_iter
      afs: Use the netfs write helpers
      netfs: Export the netfs_sreq tracepoint
      netfs: Optimise away reads above the point at which there can be no data
      netfs: Implement a write-through caching option
      netfs: Provide a launder_folio implementation
      netfs: Provide a writepages implementation
      netfs, cachefiles: Pass upper bound length to allow expansion
      ...
    16df6e07
file.c 130 KB