sendfile(2) SF_NOPUSH flag proposal
Igor Sysoev
is at rambler-co.ru
Thu May 29 10:33:06 PDT 2003
On Thu, 29 May 2003, Terry Lambert wrote:
> Igor Sysoev wrote:
> > On Wed, 28 May 2003, Terry Lambert wrote:
> > > Igor Sysoev wrote:
> > > > > 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.
> > > >
> > > > But as I understand PRUS_MORETOCOME is not set if socket is non-blocking.
> > >
> > > Then the bug is still not fixed by setting it, since your total
> > > send size might be less than `sysctl net.inet.tcp.sendspace`.
> >
> > Why ? We can reset TF_MORETOCOME if the sending is completed.
>
> It's called a "deadly embrace" deadlock. Look it up.
I misread you. I thought that sbwait() set PRUS_MORETOCOME itself.
Nevertheless there would not be a deadlock because tcp_output() tests
TF_MORETOCOME and TF_NOPSUH only the data is less than MSS. Otherwise
tcp_output() can send it.
Igor Sysoev
http://sysoev.ru/en/
More information about the freebsd-arch
mailing list