Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 03 May 2007 11:36:56 -0400
From:      Randall Stewart <rrs@cisco.com>
To:        Robert Watson <rwatson@FreeBSD.org>
Cc:        cvs-src@FreeBSD.org, src-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: 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
Message-ID:  <463A0198.3040507@cisco.com>
In-Reply-To: <200705031442.l43Egggi064069@repoman.freebsd.org>
References:  <200705031442.l43Egggi064069@repoman.freebsd.org>

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?463A0198.3040507>