Subject: CVS commit: src/sys/dev/raidframe
To: None <source-changes@NetBSD.org>
From: Greg Oster <oster@netbsd.org>
List: source-changes
Date: 02/05/2005 23:32:44
Module Name: src
Committed By: oster
Date: Sat Feb 5 23:32:44 UTC 2005
Modified Files:
src/sys/dev/raidframe: rf_reconstruct.c rf_reconstruct.h rf_reconutil.c
rf_revent.c rf_revent.h
Log Message:
Vastly improve the error handling in the case of a read/write error
that occurs during a reconstruction. We go from zero error handling
and likely panicing if something goes amiss, to gracefully bailing and
leaving the system in the best, usable state possible.
- introduce rf_DrainReconEventQueue() to allow easy cleaning of the
reconstruction event queue
- change how we cleanup the floating recon buffers in
rf_FreeReconControl(). Detect the end of the list rather
than traversing according to a count.
- keep track of the number of pending reconstruction writes. In the
event of a read error, use this to wait long enough for the pending
writes to (hopefully) drain.
- more cleanup is still needed on this code, but I didn't want to
start mixing major functional changes with minor cleanups.
XXX: There is a known issue with pool items left outstanding due to
the IO failure, and this can show up in the form of a panic at the
tail end of a shutdown. This problem is much less severe than before
these changes, and the hope/plan is that this problem will go away
once this code gets overhauled again.
To generate a diff of this commit:
cvs rdiff -r1.81 -r1.82 src/sys/dev/raidframe/rf_reconstruct.c
cvs rdiff -r1.18 -r1.19 src/sys/dev/raidframe/rf_reconstruct.h
cvs rdiff -r1.23 -r1.24 src/sys/dev/raidframe/rf_reconutil.c
cvs rdiff -r1.19 -r1.20 src/sys/dev/raidframe/rf_revent.c
cvs rdiff -r1.7 -r1.8 src/sys/dev/raidframe/rf_revent.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.