freebsd kernel with SKQ
Go to file
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
bin Calls one or more of malloc(), warn(), err(), syslog(), execlp() or 1998-10-13 14:52:33 +00:00
contrib Fix minor bogon pointed out by perl5's own perldoc. 1998-10-11 17:27:33 +00:00
crypto Remove redundant decl. of time(). Causes problems on alpha 1998-09-01 15:17:28 +00:00
etc Shut this thing up; most people don't even have this enabled. 1998-10-13 08:25:09 +00:00
games Back out the last two hacks. I've added games to the (correct) build 1998-09-21 09:01:53 +00:00
gnu Damn - dirname(1) is not available this early. Work-around. 1998-10-12 06:00:30 +00:00
include Move auth.conf path in here. Doesn't affect published interface. 1998-10-09 07:34:47 +00:00
kerberos5 While I am no longer making a shared library, nuke the old one to prevent 1998-08-30 13:08:54 +00:00
kerberosIV Add -lcrypt. 1998-09-05 00:34:36 +00:00
lib Updated library order and comments about it. This fixes libm not 1998-10-13 16:48:43 +00:00
libexec Set the user context correctly so that cd ~ does the right thing. 1998-10-13 20:42:01 +00:00
lkm Unregister the glibc2 brand at module unload time. 1998-10-11 21:08:02 +00:00
release whoops, correct patch-o in last commit. 1998-10-13 21:37:30 +00:00
sbin Fix a bug in camcontrol that caused 'camcontrol start' to not work. 1998-10-13 16:23:26 +00:00
secure Remove useless `BINOWN=root' now that it is the default. 1998-09-19 22:42:14 +00:00
share Make Australian time GB-like 1998-10-13 20:20:27 +00:00
sys Fix a bug in the error recovery code. It was possible to have more than 1998-10-13 21:41:32 +00:00
tools Prevent ldconfig from choking by creating any missing directories. 1998-09-16 17:42:53 +00:00
usr.bin One vfork() changed to fork(); one execl() changed to execv(). The 1998-10-13 15:14:37 +00:00
usr.sbin Calls one or more of malloc(), warn(), err(), syslog(), execlp() or 1998-10-13 14:52:33 +00:00
COPYRIGHT Add Id keyword 1998-09-13 23:11:13 +00:00
Makefile Add back a few useful targets lost in the reshuffle. 1998-09-29 22:03:13 +00:00
Makefile.inc0 Add back a few useful targets lost in the reshuffle. 1998-09-29 22:03:13 +00:00
Makefile.inc1 Include btxld in build-tools only for i386. 1998-10-13 10:01:32 +00:00
Makefile.upgrade Change 3.0-CURRENT to 3.0-BETA when deciding if the installed system 1998-09-23 01:46:25 +00:00
README Correct the facts. The kerberosIV/ directory is not export restricted. 1998-09-13 09:38:34 +00:00

This is the top level of the FreeBSD source directory.  This file
was last revised on: $Id: README,v 1.12 1998/06/30 08:08:05 jkh Exp $

For copyright information, please see the file COPYRIGHT in this
directory (additional copyright information also exists for some
sources in this tree - please see the specific source directories for
more information).

The Makefile in this directory supports a number of targets for
building components (or all) of the FreeBSD source tree, the most
commonly used one being ``world'', which rebuilds and installs
everything in the FreeBSD system from the source tree except the
kernel and the contents of /etc.  Please see the top of the Makefile
in this directory for more information on the standard build targets
and compile-time flags.

Building a kernel with config(8) is a somewhat more involved process,
documentation for which can be found at:
   http://www.freebsd.org/handbook/kernelconfig.html
And in the config(8) man page.

The sample kernel configuration files reside in the sys/i386/conf
sub-directory (assuming that you've installed the kernel sources), the
file named GENERIC being the one used to build your initial installation
kernel.  The file LINT contains entries for all possible devices, not
just those commonly used, and is meant more as a general reference
than an actual kernel configuration file (a kernel built from it
wouldn't even run).


Source Roadmap:
---------------
bin		System/User commands.

contrib		Packages contributed by 3rd parties.

crypto		Export controlled stuff (see crypto/README).

etc		Template files for /etc

games		Amusements.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberosIV	Kerberos package.

lib		System libraries.

libexec		System daemons.

lkm		Loadable Kernel Modules.

release		Release building Makefile & associated tools.

sbin		System commands.

secure		DES and DES-related utilities - NOT FOR EXPORT!

share		Shared resources.

sys		Kernel sources.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.


For information on synchronizing your source tree with one or more of
the FreeBSD Project's development branches, please see:

  http://www.freebsd.org/handbook/synching.html