summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe
AgeCommit message (Collapse)Author
2004-03-18Use rf_AllocDAGNode() to get new DAG nodes.oster
2004-03-18Re-work the locking mechanisms for reconstruct and PSS structuresoster
such that we don't actually hold a simplelock while we are doing a pool_get(), but that we still effectively protecting critical code. This should fix all of the outstanding LOCKDEBUG warnings related to rebuilding RAID sets.
2004-03-18- Introduce a 'dagnode' pool. Initialize it and allow for cleanup.oster
Provide rf_AllocDAGNode() and rf_FreeDAGNode() to handle allocation/freeing. - Introduce a "nodes" linked list of RF_DagNode_t's into the DAG header. Initialize nodes in InitHdrNode(). Arrange for nodes cleanup in rf_FreeDAG(). - Add a "list_next" to RF_DagNode_t to keep track of nodes on the above "nodes" list. (This is distinct from the "next" field of RF_DagNode_t, which keeps track of the firing order of nodes.) "list_next" gets used in the cleanup routines, and in traversing through a set of nodes that belong to a particular set of nodes (e.g. those belonging to xorNodes for a given DAG). - use rf_AllocDAGNode() instead of mallocs of variable-sized arrays of RF_DagNode_t's. Mostly mechanical changes to convert the DAG construction from "access nodes via an array index" to "access nodes via a 'nextnode' pointer". - rework a couple of tricky spots where assumptions about the node order was being abused. - performance remains consistent with performance before these changes. [Thanks to Simon Burge (simonb at you.know.where) for looking over the mechanical changes to make sure I didn't biff anything.]
2004-03-13raidPtr->num_spare is *NOT* sufficient here. We must allocateoster
at least an additional RF_MAXSPARE spare units, just in case.
2004-03-13This desc->mutex is only ever initialized -- never used. *toss*oster
2004-03-13paramDAG and paramASM are only ever set, but never used. *toss*oster
2004-03-13Cleanup function prototypes.oster
2004-03-13 - don't use rf_PrintUserStats() for recon statistics.oster
rf_PrintUserStats() was mean for the simulator, and doesn't provide any real info in kernel-space, especially for reconstructs. Reconstructing actually renders the stats even more useless, since it resets them all to zero before the reconstruct starts! - since rf_PrintUserStats() is no longer used, nuke it along with the routines that feed it. Nothing was using this code, and if we ever need it again, we know where to find it.
2004-03-09Introduce RF_DEBUG_ENGINE and use it to disable a number of debuggingoster
bits in rf_engine.c
2004-03-09Use RF_DEBUG_QUIESCE to #if-out some printfs that really only shouldoster
be seen when debugging.
2004-03-09rf_ShutdownList() isn't returning anything useful, and doesn't need tooster
return anything. Cleanup. Cleanup function prototypes in rf_shutdown.h Use #if RF_DEBUG_SHUTDOWN to #if-out more code.
2004-03-08Move pss_pool to rf_pools. Will save a bit of extra memory atoster
run-time, and we can only do one reconstruction at a time anyway. Nuke pss_issued_pool - move it to an internal structure in pss.
2004-03-08A few more cleanups missed in last commit.oster
2004-03-08Minor cleanup. No functional change.oster
2004-03-07Rename rf_rad_pool_lock to rf_rad_lock. The latter is far moreoster
accurate.
2004-03-07- Introduce rf_pools which contains all of the various global pools usedoster
by RAIDframe. Convert all other RAIDframe global pools to use pools defined within this new structure. - Introduce rf_pool_init(), used for initializing a single pool in RAIDframe. Teach each of the configuration routines to use rf_pool_init(). - Cleanup a few pool-related comments. - Cleanup revent initialization and #defines. - Add a missing pool_destroy() for the reconbuffer pool. (Saves another 1K off of an i386 GENERIC kernel, and makes stuff a lot more readable)
2004-03-07- Introduce rf_pools which contains all of the various global pools usedoster
by RAIDframe. Convert all other RAIDframe global pools to use pools defined within this new structure. - Introduce rf_pool_init(), used for initializing a single pool in RAIDframe. Teach each of the configuration routines to use rf_pool_init(). - Cleanup a few pool-related comments. - Cleanup revent initialization and #defines. - Add a missing pool_destroy() for the reconbuffer pool. (Saves another 1K off of an i386 GENERIC kernel, and makes stuff a lot more readable)
2004-03-07Cleanup function prototypes.oster
2004-03-07We don't need 2-fault tollerant stuff here in the default case.oster
Use #if's to conditionalize the code compilation. (Saves another 1K on i386 GENERIC kernels)
2004-03-07Minor cleanups. No functional changes.oster
2004-03-07- fix up initialization of rf_recond_pooloster
- introduce rf_reconbuffer_pool and teach rf_MakeReconBuffer() to use it
2004-03-07Re-work rf_GenerateFailedAccessASMs() to simplify things a bit.oster
rf_AllocBuffer() is available, so use it to get buffer space instead of the previous RF_Malloc() bits. Saves a few bytes, but more importantly makes the code much more readable.
2004-03-06Pretty up a bit of unused code.oster
2004-03-06rf_AllocBuffer() doesn't do anything with its dag_h parameter. Nukeoster
it, and adjust callers.
2004-03-06Sprinkle a few #if's to ignore some bits that are only used for RAID 6 or PQ ↵oster
stuff. Saves another 3K on i386 GENERIC.
2004-03-06Minor tabbing cleanup. No functional change.oster
2004-03-05Use RF_INCLUDE_PARITY_DECLUSTERING_DS to #if-out more unneeded bits.oster
(We can't do RF_DISTRIBUTE_SPARE bits without the parity declustering stuff.)
2004-03-05Introduce RF_DEBUG_DAG and use it to #if-out rf_dagDebug sections.oster
(i386 GENERIC kernel shrinks by 1.6K)
2004-03-05- remove the RF_*_INC's, as necessary. They are not needed any more.oster
- introduce RF_MIN_*'s, as necessary. These will indicate the low-water mark for pools as well as the pool_prime() value. - add pool_setlowat() for the critical pools. - pool_prime() and pool_setlowat() the raidframe_cbufpool. - re-order some pool_prime()'s and pool_sethiwat()'s for clarity.
2004-03-04Remove a comment that is no longer relevant.oster
2004-03-04Cleanup function prototypes.oster
2004-03-04Another variable that was only ever initialized. Turf.oster
2004-03-04Cleanup function prototypes.oster
2004-03-04Fix mcpair locking issues -- we really don't need the lock heldoster
the entire time we spend in calling rf_DiskIOEnqueue().
2004-03-04More function prototype cleanups.oster
2004-03-04Cleanup function prototype.oster
2004-03-04More leftover 'row' bits now removed.oster
2004-03-04Cleanup one more leftover 'row' variable. Cleanup function prototypesoster
in rf_diskqueue.h
2004-03-04resultNum isn't used anywhere. Good-bye.oster
2004-03-04rf_bwd1 and rf_bwd2 are holdovers from the "backward" error recovery.oster
Nuke them, and the little bit of code associated with them.
2004-03-03Nuke some unnecessary casts. No functional changes.oster
2004-03-03Introduce RF_REVENT_READ_FAILED, RF_REVENT_WRITE_FAILED and ↵oster
RF_REVENT_FORCEREAD_FAILED. This removes 3 more RF_PANIC()'s (but we'll currently still panic if any of these cases occur). fix up a few printf's. XXX: still needs more cleanup and testing (and be taught to not panic).
2004-03-03Cleanup function prototypes.oster
2004-03-03- cleanup unneeded 'row' from RF_CallbackDesc_s.oster
- remove callbackArg2 from RF_CallbackDesc_s -- it is only ever set, never read. - now that this is done, all callbacks should only take a single argument, and we can simplify things further.
2004-03-03Improve comments on rf_LookupRUStatus(). No functional changes.oster
2004-03-03Cleanup function prototypes.oster
2004-03-03- cleanup memory allocation in rf_AllocPSStatus()oster
- change function signature of rf_LookupRUStatus(). The last argument is now a pointer to a new PSS, in case one is needed. Rather than having rf_LookupRUStatus() allocate a new PSS, we pre-allocate one beforehand, where necessary, just in case. - change callers of rf_lookupRUStatus() to deal with the new way of calling rf_lookupRUStatus(). [no improvement or worsening of parity rebuild/initialization performance.]
2004-03-02Another spot where we're willing to wait for pool_get to give us somethingoster
useful.
2004-03-02A few more cases where RF_DEBUG_PSS can be used.oster
2004-03-02DO_WAIT and DO_SIGNAL macros are a bit much, as they are only each usedoster
in one place. Simplify things a bit. No functional change.