freebsd-dev/sys
Julian Elischer 4ef2094e45 Reviewed by: Many at differnt times in differnt parts,
including alan, john, me, luoqi, and kirk
Submitted by:	Matt Dillon <dillon@frebsd.org>

This change implements a relatively sophisticated fix to getnewbuf().
There were two problems with getnewbuf(). First, the writerecursion
can lead to a system stack overflow when you have NFS and/or VN
devices in the system. Second, the free/dirty buffer accounting was
completely broken. Not only did the nfs routines blow it trying to
manually account for the buffer state, but the accounting that was
done did not work well with the purpose of their existance: figuring
out when getnewbuf() needs to sleep.

The meat of the change is to kern/vfs_bio.c. The remaining diffs are
all minor except for NFS, which includes both the fixes for bp
interaction AND fixes for a 'biodone(): buffer already done' lockup.
Sys/buf.h also contains a chaining structure which is not used by
this patchset but is used by other patches that are coming soon.
This patch deliniated by tags PRE_MAT_GETBUF and POST_MAT_GETBUF.
(sorry for the missing T matt)
1999-03-12 02:24:58 +00:00
..
alpha Keyboard driver update in preparation for the USB keyboard driver. 1999-03-10 10:36:53 +00:00
amd64 Increased kernel virtual address space to 1GB. NOTE: You MUST have fixed 1999-03-11 18:28:46 +00:00
boot Sync with sys/boot/i386/loader/Makefile revision 1.30. 1999-03-10 13:41:44 +00:00
cam People who wanted the "tagged opening" message can boot -v. The rest 1999-03-11 10:48:02 +00:00
coda Removed a bogus cast to c_caddr_t. This is part of terminating 1999-01-29 07:23:53 +00:00
compat Fix thread/process tracking and differentiation for Linux threads emulation. 1999-03-02 00:28:09 +00:00
compile
conf Increased kernel virtual address space to 1GB. NOTE: You MUST have fixed 1999-03-11 18:28:46 +00:00
contrib Need to include /contrib/dev/oltr/... not dev/oltr/... 1999-03-10 17:45:26 +00:00
ddb Fixed -Wcast-qual warnings. 1999-02-12 12:44:19 +00:00
dev Fixed variable overflow problem. 1999-03-11 18:50:39 +00:00
fs This code got moved as a result of confusion between union mounts and 1999-02-28 16:13:25 +00:00
geom Fixed variable overflow problem. 1999-03-11 18:50:39 +00:00
gnu Don't depend on <ufs/ufs/quota.h> or another (old) prerequisite including 1999-03-06 05:21:09 +00:00
i4b update the i4b include files to i4b release 0.71.00 1999-03-07 16:09:45 +00:00
i386 Increased kernel virtual address space to 1GB. NOTE: You MUST have fixed 1999-03-11 18:28:46 +00:00
isa Keyboard driver update in preparation for the USB keyboard driver. 1999-03-10 10:36:53 +00:00
isofs/cd9660 Don't comment out dead code; remove it. 1999-01-31 11:54:29 +00:00
kern Reviewed by: Many at differnt times in differnt parts, 1999-03-12 02:24:58 +00:00
libkern Fix warnings in preparation for adding -Wall -Wcast-qual to the 1999-01-28 02:26:20 +00:00
miscfs This code got moved as a result of confusion between union mounts and 1999-02-28 16:13:25 +00:00
modules Oops. Adding a Makefile might help anyone who wants to use streams 1999-02-22 14:02:42 +00:00
msdosfs Fix warnings in preparation for adding -Wall -Wcast-qual to the 1999-01-27 22:42:27 +00:00
net Submitted by: Larry Lile 1999-03-10 10:11:43 +00:00
netatalk Fix warnings in preparation for adding -Wall -Wcast-qual to the 1999-01-27 22:42:27 +00:00
netatm Fix warnings in preparation for adding -Wall -Wcast-qual to the 1999-01-28 00:57:57 +00:00
netinet Fix the 'fwd' option to ipfw when asked to divert to another machine. 1999-03-12 01:15:57 +00:00
netipx * Change sysctl from using linker_set to construct its tree using SLISTs. 1999-02-16 10:49:55 +00:00
netkey #ifdef out unused function key_freetables. 1999-01-12 12:38:31 +00:00
netnatm Examine all occurrences of sprintf(), strcat(), and str[n]cpy() 1998-12-04 22:54:57 +00:00
netns Make INET a proper option. 1998-01-08 23:42:31 +00:00
nfs Reviewed by: Many at differnt times in differnt parts, 1999-03-12 02:24:58 +00:00
nfsclient Reviewed by: Many at differnt times in differnt parts, 1999-03-12 02:24:58 +00:00
nfsserver Untangle the nfs send and receive queue locking a little. One lock 1999-02-25 00:03:51 +00:00
ntfs Added limited write ability. Now we can use some kind 1999-02-19 12:31:02 +00:00
pc98 Keyboard driver update. 1999-03-10 14:51:53 +00:00
pccard Updated to use new APIC (SMP) safe interrupt register/unregister 1999-03-10 15:00:54 +00:00
pci Make even more of the PPSAPI implementations generic. 1999-03-11 15:09:51 +00:00
posix4 * Change sysctl from using linker_set to construct its tree using SLISTs. 1999-02-16 10:49:55 +00:00
powerpc Removed all traces of `p_switchtime'. The relevant timestamp is per-cpu, 1999-02-28 10:53:29 +00:00
rpc
svr4 svr4 emulator will refuse to unload itself if it is currently in use. 1999-02-04 12:43:17 +00:00
sys Reviewed by: Many at differnt times in differnt parts, 1999-03-12 02:24:58 +00:00
tools Declare static __inline functions as __inline in their forward 1999-02-28 11:30:00 +00:00
ufs Stop the mfs from trying to swap out crucial bits of the mfs 1999-03-12 00:44:03 +00:00
vm Stop the mfs from trying to swap out crucial bits of the mfs 1999-03-12 00:44:03 +00:00
Makefile Backed out previous commit. It depends on a.out utilities and libraries 1998-12-30 12:06:08 +00:00