diff options
author | semenu <semenu@FreeBSD.org> | 2002-08-11 20:33:11 +0000 |
---|---|---|
committer | semenu <semenu@FreeBSD.org> | 2002-08-11 20:33:11 +0000 |
commit | 68c52ce00e2d657328060b1c3b05a6775fec930d (patch) | |
tree | 1e845041ba4b13e5ec648351699a938fa675aebe /sys/kern/uipc_syscalls.c | |
parent | 049cb2e956f87bee8cd93ae00f3d9867e4dfdadc (diff) | |
download | FreeBSD-src-68c52ce00e2d657328060b1c3b05a6775fec930d.zip FreeBSD-src-68c52ce00e2d657328060b1c3b05a6775fec930d.tar.gz |
Fix sendfile(), who was calling vn_rdwr() without aresid parameter and
thus hiting EIO at the end of file. This is believed to be a feature
(not a bug) of vn_rdwr(), so we turn it off by supplying aresid param.
Reviewed by: rwatson, dg
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r-- | sys/kern/uipc_syscalls.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 35f89f2..123aef6 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -1838,7 +1838,7 @@ retry_lookup: */ if (!pg->valid || !vm_page_is_valid(pg, pgoff, xfsize)) { - int bsize; + int bsize, resid; /* * Ensure that our page is still around when the I/O @@ -1855,7 +1855,7 @@ retry_lookup: error = vn_rdwr(UIO_READ, vp, NULL, MAXBSIZE, trunc_page(off), UIO_NOCOPY, IO_NODELOCKED | IO_VMIO | ((MAXBSIZE / bsize) << 16), - td->td_ucred, NULL, td); + td->td_ucred, &resid, td); VOP_UNLOCK(vp, 0, td); vm_page_lock_queues(); vm_page_flag_clear(pg, PG_ZERO); |