Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2003 21:33:03 +0400 (MSD)
From:      Igor Sysoev <is@rambler-co.ru>
To:        Terry Lambert <tlambert2@mindspring.com>
Cc:        arch@freebsd.org
Subject:   Re: sendfile(2) SF_NOPUSH flag proposal
Message-ID:  <Pine.BSF.4.21.0305292132370.57367-100000@is>
In-Reply-To: <3ED6291B.36F382F@mindspring.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0305292132370.57367-100000>