svn commit: r267275 - projects/sendfile/sys/kern
Gleb Smirnoff
glebius at FreeBSD.org
Mon Jun 9 14:34:34 UTC 2014
Author: glebius
Date: Mon Jun 9 14:34:33 2014
New Revision: 267275
URL: http://svnweb.freebsd.org/changeset/base/267275
Log:
- In sf_io_done() remove a hack that did a zero length pru_send,
and instead call pru_ready. This is more efficient and makes
sendfile() working on AF_LOCAL sockets.
- Mark mbufs as M_NOTREADY only if sendfile_swapin() reported
that it issued I/Os.
Sponsored by: Netflix
Sponsored by: Nginx, Inc.
Modified:
projects/sendfile/sys/kern/uipc_syscalls.c
Modified: projects/sendfile/sys/kern/uipc_syscalls.c
==============================================================================
--- projects/sendfile/sys/kern/uipc_syscalls.c Mon Jun 9 14:31:35 2014 (r267274)
+++ projects/sendfile/sys/kern/uipc_syscalls.c Mon Jun 9 14:34:33 2014 (r267275)
@@ -2715,22 +2715,9 @@ sf_io_done(void *arg)
if (!refcount_release(&sfio->nios))
return;
- so = sfio->sock_fp->f_data;
+ so = sfio->sock_fp->f_data;
- if (sbready(&so->so_snd, sfio->m, sfio->npages) == 0) {
- struct mbuf *m;
-
- m = m_get(M_NOWAIT, MT_DATA);
- if (m == NULL) {
- panic("XXXGL");
- }
- m->m_len = 0;
- CURVNET_SET(so->so_vnet);
- /* XXXGL: curthread */
- (void )(so->so_proto->pr_usrreqs->pru_send)
- (so, 0, m, NULL, NULL, curthread);
- CURVNET_RESTORE();
- }
+ (void)(so->so_proto->pr_usrreqs->pru_ready)(so, sfio->m, sfio->npages);
/* XXXGL: curthread */
fdrop(sfio->sock_fp, curthread);
@@ -3141,7 +3128,8 @@ retry_space:
m0->m_data = (char *)sf_buf_kva(sf) +
(vmoff(i, off) & PAGE_MASK);
m0->m_len = xfsize(i, npages, off, space);
- m0->m_flags |= M_NOTREADY;
+ if (nios)
+ m0->m_flags |= M_NOTREADY;
if (i == 0)
sfio->m = m0;
More information about the svn-src-projects
mailing list