freebsd-src/sys
Kirk McKusick 4ed62fbd7f The only known cause of this panic is running out of disk space.
The problem occurs when an indirect block and a data block are
being allocated at the same time. For example when the 13th block
of the file is written, the filesystem needs to allocate the first
indirect block and a data block. If the indirect block allocation
succeeds, but the data block allocation fails, the error code
dellocates the indirect block as it has nothing at which to point.
Unfortunately, it does not deallocate the indirect block's associated
dependencies which then fail when they find the block unexpectedly
gone (ptr == 0 instead of its expected value). The fix is to fsync
the file before doing the block rollback, as the fsync will flush
out all of the dependencies. Once the rollback is done the file
must be fsync'ed again so that the soft updates code does not find
unexpected changes. This approach is much slower than writing the
code to back out the extraneous dependencies, but running out of
disk space is not expected to be a common occurence, so just getting
it right is the main criterion.

PR:		kern/15063
Submitted by:	Assar Westerlund <assar@stacken.kth.se>
2000-01-11 08:27:00 +00:00
..
alpha Update syscalls to Linux kernel 2.3.38. These syscalls are 2000-01-10 22:19:06 +00:00
amd64 Uncomment pcic device and put pccard in GENERIC. PCCARD will be removed 2000-01-10 02:29:23 +00:00
boot
cam
coda
compat Return Linux kernel version 2.2.12 by default. This is in line 2000-01-10 13:09:08 +00:00
compile
conf Attempt to fix a problem with receiving packets on USB ethernet interfaces. 2000-01-10 23:12:54 +00:00
contrib We cannot proceed to free the blocks of the file until the dependencies 2000-01-11 06:52:35 +00:00
crypto
ddb
dev Attempt to fix a problem with receiving packets on USB ethernet interfaces. 2000-01-10 23:12:54 +00:00
fs remove check now done in vn_isdisk(). 2000-01-10 12:24:36 +00:00
geom Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
gnu Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
i4b
i386 Update syscalls to Linux kernel 2.3.38. These syscalls are 2000-01-10 22:19:06 +00:00
isa Removed some more vestiges of ft. 2000-01-09 17:13:35 +00:00
isofs/cd9660 remove check now done in vn_isdisk(). 2000-01-10 12:24:36 +00:00
kern Also handle zero return from dscheck(). 2000-01-10 12:21:39 +00:00
libkern
miscfs Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
modules Attempt to fix a problem with receiving packets on USB ethernet interfaces. 2000-01-10 23:12:54 +00:00
msdosfs Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
net Attempt to fix a problem with receiving packets on USB ethernet interfaces. 2000-01-10 23:12:54 +00:00
netatalk
netatm
netgraph
netinet MGETHDR() does not initialize m_pkthdr.rcvif, do it here. 2000-01-10 18:46:05 +00:00
netinet6 tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
netipx
netkey
netnatm
netncp
netns
nfs tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
nfsclient tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
nfsserver tcp updates to support IPv6. 2000-01-09 19:17:30 +00:00
ntfs Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
nwfs
pc98 Put on my asbestos suit and move $mach/conf/*.$mach to conf/*.$mach as 2000-01-09 15:29:10 +00:00
pccard
pci Added PCIR_BIOS (0x30). 2000-01-10 12:53:19 +00:00
posix4
powerpc
rpc
svr4 Removed bogus include of opt_global.h. opt_global.h is automatically 2000-01-09 12:29:45 +00:00
sys Add a comment to hopefully prevent more bugs like kern/8596. 2000-01-10 19:34:40 +00:00
tools
ufs The only known cause of this panic is running out of disk space. 2000-01-11 08:27:00 +00:00
vm Give vn_isdisk() a second argument where it can return a suitable errno. 2000-01-10 12:04:27 +00:00
Makefile