From: Trond Myklebust Date: Mon, 6 Jan 2020 20:25:14 +0000 (-0500) Subject: NFS: Fix nfs_direct_write_reschedule_io() X-Git-Tag: v5.10.7~3261^2~27 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4daaeba938228f7c97e80817ccda1e091c7d3fb6;p=platform%2Fkernel%2Flinux-rpi.git NFS: Fix nfs_direct_write_reschedule_io() The 'hdr->good_bytes' is defined as the number of bytes we expect to read or write starting at offset hdr->io_start. In the case of a partial read/write we may end up adjusting hdr->args.offset and hdr->args.count to skip I/O for data that was already read/written, and so we must ensure the calculation takes that into account. Signed-off-by: Trond Myklebust Signed-off-by: Anna Schumaker --- diff --git a/fs/nfs/direct.c b/fs/nfs/direct.c index 29f00da..b768a0b 100644 --- a/fs/nfs/direct.c +++ b/fs/nfs/direct.c @@ -824,7 +824,8 @@ static void nfs_direct_write_reschedule_io(struct nfs_pgio_header *hdr) dreq->flags = NFS_ODIRECT_RESCHED_WRITES; /* fake unstable write to let common nfs resend pages */ hdr->verf.committed = NFS_UNSTABLE; - hdr->good_bytes = hdr->args.count; + hdr->good_bytes = hdr->args.offset + hdr->args.count - + hdr->io_start; } spin_unlock(&dreq->lock); }