• Andreas Gruenbacher's avatar
    fs/iomap: Fix buffered write page prefaulting · 631f871f
    Andreas Gruenbacher authored
    When part of the user buffer passed to generic_perform_write() or
    iomap_file_buffered_write() cannot be faulted in for reading, the entire
    write currently fails.  The correct behavior would be to write all the
    data that can be written, up to the point of failure.
    
    Commit a6294593 ("iov_iter: Turn iov_iter_fault_in_readable into
    fault_in_iov_iter_readable") gave us the information needed, so fix the
    page prefaulting in generic_perform_write() and iomap_write_iter() to
    only bail out when no pages could be faulted in.
    
    We already factor in that pages that are faulted in may no longer be
    resident by the time they are accessed.  Paging out pages has the same
    effect as not faulting in those pages in the first place, so the code
    can already deal with that.
    Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
    Reviewed-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    Reviewed-by: default avatarChristoph Hellwig <hch@lst.de>
    631f871f
filemap.c 111 KB