Date: Mon, 27 Nov 2000 10:12:00 -0800 (PST) From: Matt Dillon <dillon@earth.backplane.com> To: Alfred Perlstein <bright@wintelcom.net> Cc: hackers@FreeBSD.ORG Subject: Re: bwillwrite() not right. Message-ID: <200011271812.eARIC0G31791@earth.backplane.com> References: <20001126232117.C8051@fw.wintelcom.net> <200011270853.eAR8rH229425@earth.backplane.com> <20001127095848.E8051@fw.wintelcom.net>
next in thread | previous in thread | raw e-mail | index | archive | help
:Hrm, on further thought bwillwrite would be helpful for sockets when
:the free mbufs gets low, but for now I'll just test this patch
:and probably have it committed by tomorrow night.
:
:thanks,
:-Alfred
Well, maybe maybe not. If you have a TCP socket with data flowing
in both directions and you block in your write due to a low-mbuf
situation, you effectively prevent the process from draining the
receive side of the socket. So I would say you definitely do not
want any sort of bwillwrite() equivalent for writing to socket mbufs,
at least not for TCP connections.
What I would do instead is allow the socket write to continue (remember,
'I/O must be able to continue to operate'), but constrict the sending
buffer size as it drains to try to recover some memory on the write side.
On the receive side the receiving window can only be constricted when
allowed by the protocol. i.e. if you advertise 8K of buffer space you
cannot blow it back to 4K... you have to wait for 4K of data to be
received before you can advertise 4K of buffer space available. On the
receiving side. I seem to recall that there is already some code to
handle that sort of thing, but I haven't looked at it closely.
-Matt
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200011271812.eARIC0G31791>
