freebsd-nq/sys
Bruce Evans bad324ca54 Fixed livelock in getnewbuf().
It is possible for multiple process to sleep concurrently waiting
for a buffer.  When the buffer shortage is a shortage of space but
not a shortage of buffer headers, the processes took turns creating
empty buffers and waking each other to advertise the brelse() of
the empties; progress was never made because tsleep() always found
another high-priority process to run and everything was done at
splbio(), so vfs_update never had a chance to flush delayed writes,
not to mention that i/o never had a chance to complete.

The problem seems to be rare in practice, but it can easily be
reproduced by misusing block devices, at least for sufficently slow
devices on machines with a sufficiently small buffer cache.  E.g.,
`tar cvf /dev/fd0 /kernel' on an 8MB system with no disk in fd0
causes the problem quickly; the same command with a disk in fd0
causes the problem not quite as quickly; and people have reported
problems newfs'ing file systems on block devices.

Block devices only cause this problem indirectly.  They are pessimized
for time and space, and the space pessimization causes the shortage
(it manifests as internal fragmentation in buffer_map).

This should be fixed in 2.2.
1997-06-13 08:30:40 +00:00
..
alpha Grr. Remove not-ready LDT modification fluff that also crept in with 1997-06-02 06:45:17 +00:00
amd64 While deciding to install irq with unneded "conflicts" keyword, 1997-06-09 00:53:48 +00:00
compat/linux Make this thing actually compile. 1997-06-02 10:43:41 +00:00
compile
conf Synchronize with sys/i386/conf/options.i386 revision 1.47. 1997-06-06 13:07:18 +00:00
ddb Everyone's favorite, i think: make DDB understand the arrow keys for the 1997-04-12 17:35:02 +00:00
dev Fix two typos in this driver that prevented it from working properly. 1997-06-10 16:07:22 +00:00
fs Don't remove the controlling tty from the session if the vnode is being 1997-05-29 13:29:13 +00:00
geom Make ccd use the maxsecsize sector size as denominator, this 1997-05-01 19:18:40 +00:00
gnu Shrink struct inode by 20 bytes, so that malloc wastes less space. 1997-05-22 07:30:55 +00:00
i386 Use ETHER_ADDR_LEN instead of ETHER_ADDR_SIZE. 1997-06-12 19:20:53 +00:00
isa Bring back CONSPEED as a last-ditch default if you can't change the speed 1997-06-04 16:25:15 +00:00
isofs/cd9660 Hide the kernel-only stuff inside #ifdef KERNEL. 1997-05-07 13:23:04 +00:00
kern Fixed livelock in getnewbuf(). 1997-06-13 08:30:40 +00:00
libkern Style optimization in newly added POSIX range []] conformance, redo 1997-06-07 01:33:10 +00:00
miscfs Don't remove the controlling tty from the session if the vnode is being 1997-05-29 13:29:13 +00:00
modules Corrected accidental breakage in the last commit. 1997-05-26 01:02:41 +00:00
msdosfs Remove redundant check for vp == dvp (done in VFS before calling). 1997-05-17 18:32:53 +00:00
net As the Tunnel device has no real inherrent MRU limit, 1997-06-11 20:15:50 +00:00
netatalk Actually POINT to the appletalk usrreqs struct. 1997-06-02 20:07:33 +00:00
netinet make it compile with -Wall 1997-06-04 22:09:15 +00:00
netipx Mega IPX commit. 1997-05-10 09:58:58 +00:00
netkey This is the `netkey' kernel key-management service (the PF_KEY analogue 1996-06-14 17:22:18 +00:00
netnatm import Chuck Cranor's ATM driver 1997-05-09 08:04:59 +00:00
netns Remove unneeded member nsp_head from struct nspcb. 1997-04-14 18:26:51 +00:00
nfs Move commonly used code into static functions in order to reduce kernel bloat. 1997-06-12 14:08:20 +00:00
nfsclient Move commonly used code into static functions in order to reduce kernel bloat. 1997-06-12 14:08:20 +00:00
nfsserver Various fixes from NetBSD: 1997-06-03 17:22:47 +00:00
pc98 Synchronize with followings: 1997-06-09 13:44:04 +00:00
pccard Make this puppy compile again - add two includes. 1997-06-01 05:04:39 +00:00
pci Add device IDs for new Symbios SCSI chips (53c875J,885,895,896), which 1997-06-11 22:36:02 +00:00
powerpc/include Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
rpc Resolve conflicts. 1997-05-28 04:45:15 +00:00
scsi Add quirk "no tags" entry for HP 3724/5 hard disk drives. 1997-06-11 22:29:01 +00:00
sys Add safety check in case "conflicts" keyword specified more times than 1997-06-08 17:15:31 +00:00
tools Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00
ufs Submitted by: Whistle Communications (archie Cobbs) 1997-06-02 06:24:52 +00:00
vm Update the #include "opt_smpxxx.h" includes - opt_smp.h isn't needed 1997-05-29 02:57:22 +00:00
Makefile Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not 1997-02-22 09:48:43 +00:00