Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: src/sys/dev/raidframe

Module Name:    src
Committed By:   oster
Date:           Mon May 19 19:49:55 UTC 2008

Modified Files:
        src/sys/dev/raidframe: rf_reconmap.c rf_reconmap.h rf_reconstruct.c
            rf_reconstruct.h rf_revent.c

Log Message:
Re-work some of the guts of the reconstruction code.

Reconmap used to have one pointer for every reconstruction unit.  This
does not scale well in the land of 1TB disks, where some 100MB+ of
"status pointers" are required for typical configurations.  Convert
the reconstruction code to use a "sliding status window" which will
scale nicely regardless of the number of stripes/reconstruction units
in the RAID set.  Convert the main reconstruction loop to rebuild the
array in chunks rather than in one big lump.

As part of these changes, introduce a function to kick any waiters on
the head separation callback list, and use that in the main
reconstruction event queue to wake up the waiters if things have
stalled.  (I believe this may fix a race condition that could occur at
at least at the very end of a disk during reconstruction under heavy
IO load.)

Thanks to Brian Buhrow for all his help, support, and patience in
testing these changes.

To generate a diff of this commit:
cvs rdiff -r1.30 -r1.31 src/sys/dev/raidframe/rf_reconmap.c
cvs rdiff -r1.10 -r1.11 src/sys/dev/raidframe/rf_reconmap.h
cvs rdiff -r1.103 -r1.104 src/sys/dev/raidframe/rf_reconstruct.c
cvs rdiff -r1.23 -r1.24 src/sys/dev/raidframe/rf_reconstruct.h
cvs rdiff -r1.24 -r1.25 src/sys/dev/raidframe/rf_revent.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Home | Main Index | Thread Index | Old Index