sendfile(2) SF_NOPUSH flag proposal

Terry Lambert tlambert2 at mindspring.com
Wed May 28 22:11:09 PDT 2003


Bill Fenner wrote:
> Why not set PRUS_MORETOCOME on all but the final pru_send() call?

If the file is larger than `sysctl net.inet.tcp.sendspace`, then
this code in do_sendfile():

                if (sbspace(&so->so_snd) < so->so_snd.sb_lowat) {
                        if (so->so_state & SS_NBIO) {
                                m_freem(m);
                                sbunlock(&so->so_snd);
                                splx(s);
                                error = EAGAIN;
                                goto done;
                        }
                        error = sbwait(&so->so_snd);

will result in you sleeping with PRUS_MORETOCOME set, but with
no more being sent because the send buffer doesn't get emptied,
as it's waiting for more data to send.

-- Terry


More information about the freebsd-arch mailing list