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