• Kairui Song's avatar
    nfs: drop usage of folio_file_pos · 237d2907
    Kairui Song authored
    folio_file_pos is only needed for mixed usage of page cache and swap
    cache, for pure page cache usage, the caller can just use folio_pos
    instead.
    
    After commit e1209d3a ("mm: introduce ->swap_rw and use it for reads
    from SWP_FS_OPS swap-space"), swap cache should never be exposed to nfs.
    
    So remove the usage of folio_file_pos in following NFS functions / helpers:
    
    - nfs_vm_page_mkwrite
    
      It's only used by nfs_file_vm_ops.page_mkwrite
    
    - trace event helper: nfs_folio_event
    - trace event helper: nfs_folio_event_done
    
      These two are used through DEFINE_NFS_FOLIO_EVENT and
      DEFINE_NFS_FOLIO_EVENT_DONE, which defined following events:
    
      - trace_nfs_aop_readpage{_done}: only called by nfs_read_folio
      - trace_nfs_writeback_folio: only called by nfs_wb_folio
      - trace_nfs_invalidate_folio: only called by nfs_invalidate_folio
      - trace_nfs_launder_folio_done: only called by nfs_launder_folio
    
      None of them could possibly be used on swap cache folio,
      nfs_read_folio only called by:
      .write_begin -> nfs_read_folio
      .read_folio
    
      nfs_wb_folio only called by nfs mapping:
      .release_folio -> nfs_wb_folio
      .launder_folio -> nfs_wb_folio
      .write_begin -> nfs_read_folio -> nfs_wb_folio
      .read_folio -> nfs_wb_folio
      .write_end -> nfs_update_folio -> nfs_writepage_setup -> nfs_setup_write_request -> nfs_try_to_update_request -> nfs_wb_folio
      .page_mkwrite -> nfs_update_folio -> nfs_writepage_setup -> nfs_setup_write_request -> nfs_try_to_update_request -> nfs_wb_folio
      .write_begin -> nfs_flush_incompatible -> nfs_wb_folio
      .page_mkwrite -> nfs_vm_page_mkwrite -> nfs_flush_incompatible -> nfs_wb_folio
    
      nfs_invalidate_folio is only called by .invalidate_folio.
      nfs_launder_folio is only called by .launder_folio
    
    - nfs_grow_file
    - nfs_update_folio
    
      nfs_grow_file is only called by nfs_update_folio, and all
      possible callers of them are:
    
      .write_end -> nfs_update_folio
      .page_mkwrite -> nfs_update_folio
    
    - nfs_wb_folio_cancel
    
      .invalidate_folio -> nfs_wb_folio_cancel
    
    Also, seeing from the swap side, swap_rw is now the only interface calling
    into fs, the offset info is always in iocb.ki_pos now.
    
    So we can remove all these folio_file_pos call safely.
    
    Link: https://lkml.kernel.org/r/20240521175854.96038-8-ryncsn@gmail.comSigned-off-by: default avatarKairui Song <kasong@tencent.com>
    Cc: Trond Myklebust <trond.myklebust@hammerspace.com>
    Cc: Anna Schumaker <anna@kernel.org>
    Cc: Barry Song <v-songbaohua@oppo.com>
    Cc: Chao Yu <chao@kernel.org>
    Cc: Chris Li <chrisl@kernel.org>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: David Howells <dhowells@redhat.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ilya Dryomov <idryomov@gmail.com>
    Cc: Jaegeuk Kim <jaegeuk@kernel.org>
    Cc: Jeff Layton <jlayton@kernel.org>
    Cc: Marc Dionne <marc.dionne@auristor.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Cc: NeilBrown <neilb@suse.de>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Ryusuke Konishi <konishi.ryusuke@gmail.com>
    Cc: Xiubo Li <xiubli@redhat.com>
    Cc: Yosry Ahmed <yosryahmed@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    237d2907
file.c 23.2 KB