Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 3 May 2007 14:42:42 +0000 (UTC)
From:      Robert Watson <rwatson@FreeBSD.org>
To:        src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   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:  <200705031442.l43Egggi064069@repoman.freebsd.org>

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



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