cvs commit: src/sys/kern uipc_debug.c uipc_sockbuf.c
uipc_socket.c
uipc_syscalls.c src/sys/netinet sctputil.c src/sys/sys socketvar.h
Randall Stewart
rrs at cisco.com
Thu May 3 15:34:45 UTC 2007
Robert Watson wrote:
> rwatson 2007-05-03 14:42:42 UTC
>
> FreeBSD src repository
>
> Modified files:
> sys/kern uipc_debug.c uipc_sockbuf.c uipc_socket.c
> uipc_syscalls.c
> sys/netinet sctputil.c
> sys/sys socketvar.h
> Log:
> sblock() implements a sleep lock by interlocking SB_WANT and SB_LOCK flags
> on each socket buffer with the socket buffer's mutex. This sleep lock is
> used to serialize I/O on sockets in order to prevent I/O interlacing.
>
> This change replaces the custom sleep lock with an sx(9) lock, which
> results in marginally better performance, better handling of contention
> during simultaneous socket I/O across multiple threads, and a cleaner
> separation between the different layers of locking in socket buffers.
> Specifically, the socket buffer mutex is now solely responsible for
> serializing simultaneous operation on the socket buffer data structure,
> and not for I/O serialization.
>
> While here, fix two historic bugs:
>
> (1) a bug allowing I/O to be occasionally interlaced during long I/O
> operations (discovere by Isilon).
>
> (2) a bug in which failed non-blocking acquisition of the socket buffer
> I/O serialization lock might be ignored (discovered by sam).
>
> SCTP portion of this patch submitted by rrs.
>
> Revision Changes Path
> 1.2 +0 -8 src/sys/kern/uipc_debug.c
> 1.169 +16 -19 src/sys/kern/uipc_sockbuf.c
> 1.298 +68 -61 src/sys/kern/uipc_socket.c
> 1.254 +0 -4 src/sys/kern/uipc_syscalls.c
> 1.24 +10 -15 src/sys/netinet/sctputil.c
> 1.158 +4 -22 src/sys/sys/socketvar.h
>
Cool .. great work Robert!!!
R
--
Randall Stewart
NSSTG - Cisco Systems Inc.
803-345-0369 <or> 803-317-4952 (cell)
More information about the cvs-src
mailing list