iomap: Add done_before argument to iomap_dio_rw
authorAndreas Gruenbacher <agruenba@redhat.com>
Sat, 24 Jul 2021 10:26:41 +0000 (12:26 +0200)
committerAndreas Gruenbacher <agruenba@redhat.com>
Sun, 24 Oct 2021 13:26:05 +0000 (15:26 +0200)
commit4fdccaa0d184c202f98d73b24e3ec8eeee88ab8d
treeb6468d6e6a3fecb66b4a5e9c46819268bf9289ad
parent97308f8b0d867e9ef59528cd97f0db55ffdf5651
iomap: Add done_before argument to iomap_dio_rw

Add a done_before argument to iomap_dio_rw that indicates how much of
the request has already been transferred.  When the request succeeds, we
report that done_before additional bytes were tranferred.  This is
useful for finishing a request asynchronously when part of the request
has already been completed synchronously.

We'll use that to allow iomap_dio_rw to be used with page faults
disabled: when a page fault occurs while submitting a request, we
synchronously complete the part of the request that has already been
submitted.  The caller can then take care of the page fault and call
iomap_dio_rw again for the rest of the request, passing in the number of
bytes already tranferred.

Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
fs/btrfs/file.c
fs/erofs/data.c
fs/ext4/file.c
fs/gfs2/file.c
fs/iomap/direct-io.c
fs/xfs/xfs_file.c
fs/zonefs/super.c
include/linux/iomap.h