freebsd-skq/sys
Robert Watson 7abab91135 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.
2007-05-03 14:42:42 +00:00
..
amd64 Revamp the MSI/MSI-X code a bit to achieve two main goals: 2007-05-02 17:50:36 +00:00
arm Remove sa1_cache_clean_addr. It isn't needed. 2007-05-03 09:51:12 +00:00
boot Add zfs_load here. 2007-04-09 22:09:09 +00:00
bsm Change $P4$ ID strings to P4 ID strings so that they are not auto-expanded 2007-04-17 12:27:08 +00:00
cam Only schedule the xpt_finishconfig_task once. This fixes some potential 2007-04-27 14:23:05 +00:00
cddl Share-lock a vnode where possible. 2007-05-02 01:03:10 +00:00
coda Make insmntque() externally visibile and allow it to fail (e.g. during 2007-03-13 01:50:27 +00:00
compat Share-lock a vnode where possible. 2007-05-02 01:03:10 +00:00
conf Add static build depends for ng_deflate, ng_nat and ng_sppp. 2007-04-25 15:30:17 +00:00
contrib Share-lock a vnode where possible. 2007-05-02 01:03:10 +00:00
crypto Overhaul driver/subsystem api's: 2007-03-21 03:42:51 +00:00
ddb Use FOREACH_PROC_IN_SYSTEM instead of using its unrolled form. 2007-01-17 15:05:52 +00:00
dev Update __FreeBSD_version check for MFC of pmap_mapbios(). 2007-05-02 18:43:51 +00:00
fs The process lock is held when procfs_ioctl() is called. Assert that this 2007-05-01 12:59:20 +00:00
gdb
geom Put the scheme (APM, GPT, etc) in the XML. 2007-04-27 05:58:10 +00:00
gnu Change #include <machine/pcpu.h> to #include <sys/pcpu.h> 2007-04-01 12:48:10 +00:00
i4b Tell the user when the setup of the interrupt handler failed and return 2007-04-01 16:52:54 +00:00
i386 Revamp the MSI/MSI-X code a bit to achieve two main goals: 2007-05-02 17:50:36 +00:00
ia64 Add support for specifying a minimal size for vm.kmem_size in the loader via 2007-04-21 01:14:48 +00:00
isa When trying to allocate a PnP BIOS memory resource, the code loops trying 2007-04-17 15:14:23 +00:00
kern sblock() implements a sleep lock by interlocking SB_WANT and SB_LOCK flags 2007-05-03 14:42:42 +00:00
libkern strchr() and strrchr() are already present in the kernel, but with less 2007-04-10 21:42:12 +00:00
modules MFp4: Now that ZFS can use FreeBSD's namecache, turn it off by default and 2007-04-24 16:59:20 +00:00
net Fix flag descriptions. 2007-05-03 09:07:36 +00:00
net80211 change ic_modecaps to a bit vector and use setbit, et. al. 2007-03-11 22:37:32 +00:00
netatalk Use privilege PRIV_NET_ADDIFADDR rather than suser() to authorize 2007-02-19 22:40:02 +00:00
netatm Fix use after free bug: use temporary variable to hold next entry in linked 2007-04-03 12:45:10 +00:00
netgraph Avoid false assertion on transmit and delayed ack timeout with enabled invariants. 2007-04-24 10:50:25 +00:00
netinet sblock() implements a sleep lock by interlocking SB_WANT and SB_LOCK flags 2007-05-03 14:42:42 +00:00
netinet6 - Somehow the disable fragment option got lost. We could 2007-05-02 12:50:13 +00:00
netipsec Update comment regarding how we check privilege on FreeBSD: we now use 2007-04-10 16:09:00 +00:00
netipx Build ipx_ip.c only if options IPXIP is defined. No functional change. 2007-02-26 11:55:34 +00:00
netkey
netnatm s/destory/destroy/ (except for the code in contrib/). 2007-04-16 12:31:35 +00:00
netncp Use pause() rather than tsleep() on stack variables and function pointers. 2007-02-27 17:23:29 +00:00
netsmb Replace custom file descriptor array sleep lock constructed using a mutex 2007-04-04 09:11:34 +00:00
nfs NFSv4 client: 2006-11-28 19:33:28 +00:00
nfs4client Rename some functions and variables from nfs_* to nfs4_* to avoid 2007-01-25 14:33:13 +00:00
nfsclient Various fixes to the NFS Directio support. 2007-04-25 20:34:55 +00:00
nfsserver Remove MAC Framework access control check entry points made redundant with 2007-04-22 15:31:22 +00:00
opencrypto Replace custom file descriptor array sleep lock constructed using a mutex 2007-04-04 09:11:34 +00:00
pc98 Remove trailing '.' for consistency! 2007-04-10 21:40:13 +00:00
pccard
pci Add VLAN capability. 2007-04-23 12:19:02 +00:00
powerpc Add ofw bus methods to the ppc nexus driver. This will be used in future 2007-04-20 03:24:59 +00:00
rpc Move rpc/types.h under sys/, as this is used by ZFS kernel module. 2007-04-10 22:10:16 +00:00
security Don't expose #ifdef NOTYET parts to userspace via audit_ioctl.h, just 2007-04-29 16:20:32 +00:00
sparc64 Use the VIS-based Spitfire version of the page copying and zeroing 2007-05-01 16:19:28 +00:00
sun4v Add support for specifying a minimal size for vm.kmem_size in the loader via 2007-04-21 01:14:48 +00:00
sys sblock() implements a sleep lock by interlocking SB_WANT and SB_LOCK flags 2007-05-03 14:42:42 +00:00
tools Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
ufs Fix the NAMEI zone leak when snapshot was successfully created. 2007-04-10 09:31:42 +00:00
vm Remove some code from vmspace_fork() that became redundant after 2007-04-26 05:48:17 +00:00
Makefile o Add bsm and security to a list of cscope dirs. 2007-04-14 16:29:15 +00:00