Hi! Why can't we get rid of VOP_READ(.. UIO_NOCOPY...) call in sendfile()? Me, I can't quite understand what UIO_NOCOPY means... As long as sendfile() function already plays around pages, it can use VOP_GETPAGES(). The following patch looks works for me. Could anybody said if it has any benefits or not?
Index: uipc_syscalls.c =================================================================== RCS file: /home/ncvs/src/sys/kern/uipc_syscalls.c,v retrieving revision 1.110 diff -u -r1.110 uipc_syscalls.c --- uipc_syscalls.c 20 May 2002 05:41:03 -0000 1.110 +++ uipc_syscalls.c 13 Aug 2002 17:54:33 -0000 @@ -1820,10 +1820,7 @@ */ bsize = vp->v_mount->mnt_stat.f_iosize; vn_lock(vp, LK_SHARED | LK_NOPAUSE | LK_RETRY, td); - 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); + error = VOP_GETPAGES(vp, &pg, PAGE_SIZE, 0, 0); VOP_UNLOCK(vp, 0, td); vm_page_flag_clear(pg, PG_ZERO); vm_page_io_finish(pg); Bye! To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message