freebsd-nq/sys
Kenneth D. Merry 60a899a075 Fix a bug in the error recovery code. It was possible to have more than
one error recovery action oustanding for a given peripheral.

This is bad for several reasons.  The first problem is that the error
recovery actions would likely be to fix the same problem.  (e.g., we
queue 5 CCBs to a disk, and the first one comes back with 0x04,0x02.  We
start error recovery, and the second one comes back with the same status.
Then the third one comes back, and so on.  Each one causes the drive to get
nailed with a start unit, when we really only need one.)

The other problem is that we only have space to store one CCB while we're
doing error recovery.  The subsequent error recovery actions that got
started were over-writing the CCBs from previous error recovery actions,
but we still tried to call the done routine N times for N error recovery
actions.  Each call to dadone() was done with the same CCB, though.  So on
the second one, we got a "biodone: buffer not busy" panic, since the buffer
in question had already been through biodone().

In any case, this fixes things so that any any given time, there's only one
error recovery action outstanding for any given peripheral driver.

Reviewed by:	gibbs
Reported by:	Philippe Regnauld <regnauld@deepo.prosa.dk>
[ Philippe wins the "bug finder of the week" award ]
1998-10-13 21:41:32 +00:00
..
alpha Sync up with some needed x86 options. 1998-10-13 21:38:46 +00:00
amd64 Fixed two potentially serious classes of bugs: 1998-10-13 08:24:45 +00:00
boot Change to a 15-sector boot2. 1998-10-13 21:35:42 +00:00
cam Fix a bug in the error recovery code. It was possible to have more than 1998-10-13 21:41:32 +00:00
coda Fixes for lkm: 1998-09-29 20:19:45 +00:00
compat Fix a couple of out-of-bounds array references in mapping between 1998-10-11 04:54:16 +00:00
compile
conf Fixed bitrot in mfs options. MFS_ROOT split into MFS_ROOT and 1998-10-12 12:27:24 +00:00
contrib/softupdates Fix 'noatime' bug that was unrelated to use of noatime. 1998-10-03 19:17:11 +00:00
ddb Call some helper routines to be supplied by kern_linker.c in order to 1998-10-09 23:34:09 +00:00
dev Update from NetBSD if_de.c 1.72 to 1.80. This is mostly bugfixes, and 1998-10-13 09:05:58 +00:00
fs Fixes for lkm: 1998-09-29 20:19:45 +00:00
geom Update system to new device statistics code. 1998-09-15 08:15:30 +00:00
gnu Fixed bloatage of `struct inode'. We used 5 "spare" fields for ext2fs, 1998-10-13 15:45:43 +00:00
i386 Fixed two potentially serious classes of bugs: 1998-10-13 08:24:45 +00:00
isa Fix breakage introduced by last patch. bde has added CC_QUIET flag to 1998-10-12 18:53:33 +00:00
isofs/cd9660 Remove the SLICE code. 1998-09-14 19:56:42 +00:00
kern Load the full symbol tables if they are present. This means that ddb 1998-10-13 09:27:00 +00:00
libkern Converted rcsid to $Id$ again. There shouldn't be any rcsids in the kernel. 1998-08-17 19:26:37 +00:00
miscfs Make devfs update the atime timestamp so that 'w' works when using 1998-09-30 20:33:46 +00:00
modules Unregister the glibc2 brand at module unload time. 1998-10-11 21:08:02 +00:00
msdosfs Remove unused variable. 1998-09-13 15:40:31 +00:00
net Check the timeval passed to BIOCSRTIMEOUT with itimerfix. Use tvtohz() 1998-10-08 00:32:08 +00:00
netatalk Fixed printf format errors. 1998-08-17 01:05:25 +00:00
netatm Two patches from the HARP people: 1998-09-17 09:35:02 +00:00
netinet Dike out some obsolete defines which referenced ih_next and ih_prev from 1998-09-26 14:26:59 +00:00
netipx Yow! Completely change the way socket options are handled, eliminating 1998-08-23 03:07:17 +00:00
netkey Fixed printf format errors. 1998-08-17 01:05:25 +00:00
netnatm This commit fixes various 64bit portability problems required for 1998-06-07 17:13:14 +00:00
netns Make INET a proper option. 1998-01-08 23:42:31 +00:00
nfs In nfs_link(), check for a cross-device mount *before* looking 1998-09-29 23:39:37 +00:00
nfsclient In nfs_link(), check for a cross-device mount *before* looking 1998-09-29 23:39:37 +00:00
nfsserver The code checks each fragment mark to see if it's valid; if the fragment 1998-09-29 22:33:05 +00:00
pc98 Sync with sys/i386/isa/isa.c and wd.c revisions 1.115 and 1.177, 1998-10-13 09:44:09 +00:00
pccard - Fix a bug where a "power_off_slot' timeout was not cancelled when the 1998-09-24 17:56:31 +00:00
pci Update from NetBSD if_de.c 1.72 to 1.80. This is mostly bugfixes, and 1998-10-13 09:05:58 +00:00
posix4 Set PAGE_SIZE for _SC_PAGESIZE sysconf(). 1998-06-01 21:54:43 +00:00
powerpc Add support for adjkerntz (largely untested). 1998-10-06 08:40:18 +00:00
rpc Resolve conflicts. 1997-05-28 04:45:15 +00:00
sys Debug typo fixes. 1998-10-09 23:07:27 +00:00
tools VOP_STRATEGY grows an (struct vnode *) argument 1998-07-04 20:45:42 +00:00
ufs Fixed bloatage of `struct inode'. We used 5 "spare" fields for ext2fs, 1998-10-13 15:45:43 +00:00
vm Fixed two potentially serious classes of bugs: 1998-10-13 08:24:45 +00:00
Makefile In src/Makefile.inc1: 1998-10-11 18:39:38 +00:00