• David Howells's avatar
    afs: Stop implementing ->writepage() · a9eb558a
    David Howells authored
    We're trying to get rid of the ->writepage() hook[1].  Stop afs from using
    it by unlocking the page and calling afs_writepages_region() rather than
    folio_write_one().
    
    A flag is passed to afs_writepages_region() to indicate that it should only
    write a single region so that we don't flush the entire file in
    ->write_begin(), but do add other dirty data to the region being written to
    try and reduce the number of RPC ops.
    
    This requires ->migrate_folio() to be implemented, so point that at
    filemap_migrate_folio() for files and also for symlinks and directories.
    
    This can be tested by turning on the afs_folio_dirty tracepoint and then
    doing something like:
    
       xfs_io -c "w 2223 7000" -c "w 15000 22222" -c "w 23 7" /afs/my/test/foo
    
    and then looking in the trace to see if the write at position 15000 gets
    stored before page 0 gets dirtied for the write at position 23.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc: Marc Dionne <marc.dionne@auristor.com>
    cc: Christoph Hellwig <hch@lst.de>
    cc: Matthew Wilcox <willy@infradead.org>
    cc: linux-afs@lists.infradead.org
    Link: https://lore.kernel.org/r/20221113162902.883850-1-hch@lst.de/ [1]
    Link: https://lore.kernel.org/r/166876785552.222254.4403222906022558715.stgit@warthog.procyon.org.uk/ # v1
    a9eb558a
write.c 25.7 KB