mirror of
https://github.com/torvalds/linux
synced 2024-09-06 09:51:23 +00:00
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 <trond.myklebust@hammerspace.com> Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
This commit is contained in:
parent
8c9cb71491
commit
4daaeba938
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue