cvs commit: src/sys/dev/virtual/net if_vke.c src/sys/kern kern_resource.c uipc_socket.c uipc_socket2.c uipc_usrreq.c src/sys/platform/vkernel/platform init.c src/sys/sys socketvar.h unpcb.h
Matthew Dillon
dillon at crater.dragonflybsd.org
Mon May 26 22:27:25 PDT 2008
dillon 2008/05/26 22:25:36 PDT
DragonFly src repository
Modified files:
sys/dev/virtual/net if_vke.c
sys/kern kern_resource.c uipc_socket.c
uipc_socket2.c uipc_usrreq.c
sys/platform/vkernel/platform init.c
sys/sys socketvar.h unpcb.h
Log:
Get rid of an old and terrible hack. Local stream sockets enqueue packets
directly on the peer's sockbuf, rather then the sender's sockbuf. That
part of the code is fine, but in order to prevent the sender from queueing
infinite mbufs (because its sockbuf appears to be empty when you do that)
the code dynamically messed around with the sender's high water mark.
This blew up the new SOCK_SEQPACKET. In particular, it blows up the
use of the PR_ATOMIC on stream sockets and can cause spurious EMSGSIZE
errors to be returned instead of the EWOULDBLOCK that should have been
returned.
Also fix, or partially the resource limit code which tries to reduce the
high water mark when a user is using too many mbufs. This never worked
well and still doesn't, but it is in better shape now.
Get rid of the crufty code and simply add a flag to the signalsockbuf,
SSB_STOP, to stop the sender.
Also adjust the vkernel to increase the default socket buffer when
connecting to vknet instead of if_tap. VKE currently issues non-blocking
writes to vknet/tap and we do not want to lose packets for no good reason.
Revision Changes Path
1.9 +8 -2 src/sys/dev/virtual/net/if_vke.c
1.35 +13 -4 src/sys/kern/kern_resource.c
1.48 +4 -3 src/sys/kern/uipc_socket.c
1.31 +1 -1 src/sys/kern/uipc_socket2.c
1.41 +22 -28 src/sys/kern/uipc_usrreq.c
1.55 +5 -0 src/sys/platform/vkernel/platform/init.c
1.31 +18 -4 src/sys/sys/socketvar.h
1.5 +2 -2 src/sys/sys/unpcb.h
http://www.dragonflybsd.org/cvsweb/src/sys/dev/virtual/net/if_vke.c.diff?r1=1.8&r2=1.9&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/kern_resource.c.diff?r1=1.34&r2=1.35&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_socket.c.diff?r1=1.47&r2=1.48&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_socket2.c.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/kern/uipc_usrreq.c.diff?r1=1.40&r2=1.41&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/platform/vkernel/platform/init.c.diff?r1=1.54&r2=1.55&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/socketvar.h.diff?r1=1.30&r2=1.31&f=u
http://www.dragonflybsd.org/cvsweb/src/sys/sys/unpcb.h.diff?r1=1.4&r2=1.5&f=u
More information about the Commits
mailing list