freebsd-dev/sys
Kirk McKusick fa06a012cd This patch fixes a problem caused by applications that rapidly and
repeatedly truncate the same file. Each time the file is truncated,
a buffer is grabbed to store the indirect block numbers that need
to be freed. Those blocks cannot be freed until the inode claiming
them is written to disk. Thus, the number of buffers being held by
soft updates explodes and in extreme cases can run the kernel out
of buffers. The problem can be avoided by doing an fsync on the
file every debug.maxindirdep truncates (currently defaulted to 50).
The fsync causes the inode to be written so that the held buffers
can be freed. The check for excessive buffers is checked as part
of the existing hook for excessive dependencies (softdep_slowdown)
in the truncate code.

Reported by:	David Schultz <dschultz@uclink.Berkeley.EDU>
Sponsored by:   DARPA & NAI Labs.
MFC after:	3 weeks
2003-01-07 18:23:50 +00:00
..
alpha Approved by: gallatin (mentor) 2003-01-03 00:19:54 +00:00
amd64 Document bit 31 of the cpuid features word as PBE (Pending Break Enable). 2003-01-03 18:54:59 +00:00
arm MB_LEN_MAX is not MD, move it to the MI limits.h. 2002-12-22 06:38:45 +00:00
boot Add SCSI MO device support. 2003-01-06 13:43:15 +00:00
cam Back out last commit. 2003-01-06 19:30:21 +00:00
coda Back our kernel support for reliable signal queues. 2002-10-01 17:15:53 +00:00
compat Add function linux_msg() for regulating output from the linux emulation 2003-01-02 02:19:10 +00:00
conf Add two symbols start_ctors and stop_ctors to allow us to find the 2003-01-06 07:37:15 +00:00
contrib SMP locking for ifnet list. 2002-12-22 05:35:03 +00:00
crypto Make this compilable from userland as well. 2002-11-01 08:56:39 +00:00
ddb Revert previous and move the prototype for db_alt_break to ddb.h. 2002-12-31 18:30:53 +00:00
dev - Fix print format for FreeBSD-4 2003-01-07 12:58:08 +00:00
fs Don't override the vop_lock, vop_unlock and vop_isunlocked methods. 2003-01-05 19:14:44 +00:00
geom BSD disklabels expose the controling label though the 'c' partition, and 2003-01-06 20:10:41 +00:00
gnu Since Jeffr made the std* functions the default in rev 1.63 of 2003-01-04 08:47:19 +00:00
i4b Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
i386 Document bit 31 of the cpuid features word as PBE (Pending Break Enable). 2003-01-03 18:54:59 +00:00
ia64 Move ia64_sapics and ia64_sapic_count from interrupt.c to sapic.c 2003-01-06 02:09:08 +00:00
isa Remove calls to cdevsw_add(), they are dreprecated on this branch now. 2002-12-28 21:39:04 +00:00
isofs/cd9660 Temporarily introduce a new VOP_SPECSTRATEGY operation while I try 2003-01-04 22:10:36 +00:00
kern Cast the integer read as the first argument for %b to an unsigned integer 2003-01-07 18:17:18 +00:00
libkern Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
modules - Replace printf() with device_printf(). 2003-01-04 10:21:11 +00:00
net don't reference a pkthdr after M_MOVE_PKTHDR has "remove it"; instead 2003-01-06 21:33:54 +00:00
netatalk Lock up ifaddr reference counts. 2002-12-18 11:46:59 +00:00
netatm Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
netgraph Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
netinet Validate inp before de-referencing it. 2003-01-05 07:56:24 +00:00
netinet6 don't reference a pkthdr after M_MOVE_PKTHDR has "remove it"; instead 2003-01-06 21:33:54 +00:00
netipsec Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
netipx Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
netkey Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
netnatm Be consistent about functions being static. 2002-10-16 09:19:17 +00:00
netncp - Change mb_copy_t to take a size_t as the length argument instead of an 2002-11-08 21:26:32 +00:00
netns Use m_length() instead of home-rolled versions. 2002-09-18 19:44:14 +00:00
netsmb Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
nfs Change iov_base's type from char *' to the standard void *'. All 2002-10-11 14:58:34 +00:00
nfsclient Since Jeffr made the std* functions the default in rev 1.63 of 2003-01-04 08:47:19 +00:00
nfsserver Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
opencrypto correct flags passed when allocation crypto request structures so we 2003-01-06 18:52:05 +00:00
pc98 Rename the dos_partition structure for pc98 to pc98_partition. 2003-01-04 08:50:48 +00:00
pccard Merge from P4: 2003-01-04 17:26:35 +00:00
pci o Only try to recopy the mbuf into an mbuf cluster if 2003-01-07 01:01:20 +00:00
posix4 Rework the sysconf(3) interaction with aio: 2002-11-17 04:15:34 +00:00
powerpc Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
rpc
security Fix warnings on 64bits architectures. 2003-01-06 12:07:38 +00:00
sparc64 Change the iommu code to be able to handle more than one DVMA area per 2003-01-06 21:59:54 +00:00
sys We've had something like this file since 1992, so therefore this file 2003-01-07 04:37:40 +00:00
tools - Move ASSERT_VOP_*LOCK* functionality into functions in vfs_subr.c 2002-09-26 04:48:44 +00:00
ufs This patch fixes a problem caused by applications that rapidly and 2003-01-07 18:23:50 +00:00
vm Convert VOP_STRATEGY to VOP_SPECSTRATEGY in the generic getpages and 2003-01-05 20:32:03 +00:00
Makefile