Commit Graph

270 Commits

Author SHA1 Message Date
oster 2c127bf249 Allow getting a component label from a spare disk. 2000-06-03 16:44:43 +00:00
oster 66e6338ac9 Use 'componentN' rather than leaving blanks for non-existant disks
in the 'raidctl -s' output.
2000-06-02 01:17:14 +00:00
matt c9aff328d9 Make booted_device global (and booted_parition for consitency).
Eliminate it from header files and other extern definitions.
2000-06-01 00:49:49 +00:00
oster 00a6796b71 Oops.. reconstruction percentages were being reported incorrectly.
Thanks to Manuel Bouyer for noting this.
2000-05-31 00:52:36 +00:00
oster 8e82dfa363 For a RAID 1 set that has N components, allow the set to auto-configure as
long as at least one of the master or the mirror is available for each
of the N/2 'rows' of the set. (No, RAIDframe doesn't do N-way mirroring..)
Thanks to Manuel Bouyer for noting the problem.
2000-05-30 03:29:49 +00:00
oster ef4a0a7cf8 Use #include <sys/kernel.h> instead of a 'extern int hz'.
Make this file more readable.
2000-05-30 02:04:29 +00:00
oster c11100526b Don't let the autodetection code get tripped up by negative mod-counters. 2000-05-29 02:57:34 +00:00
oster f1f5c4d00e Fix a couple of typos. (Thanks Wiz! :) ) 2000-05-29 01:43:04 +00:00
oster 39a667120f In the event that an up-to-date component cannot be located for a specific
position, see if there is a failed component still hanging around that
we can use instead (but still mark it as failed).  This leads to more
reasonable behaviour (and fewer surprises!) when autoconfiguring and
failed (or previously failed) components are still on the system.
2000-05-28 22:53:49 +00:00
oster f329fb84ad We need to be slightly more clever during auto-configuration, to make
sure that we a) don't ignore components with correct mod-counters, and
b) do ignore components with bogus mod-counters.
2000-05-28 05:23:41 +00:00
oster 1ddfaaf8fa Umm.. Complete is not equal to 'left to do'. Fix the math. 2000-05-28 03:42:23 +00:00
oster e38b4355e2 Abort any parity re-writes before unconfiguring a RAID set.
Partially addresses PR#10182.
2000-05-28 03:00:31 +00:00
oster 228570e110 When setting auto-config/rootable bits, only try to update the
component label if the component is actually alive.
2000-05-28 01:03:22 +00:00
oster 1aaf6772f1 - Add a mechanism for obtaining finer-grained 'progress' information
regarding reconstructs, copybacks, etc.

- RAID 0 doesn't do copybacks, but don't make raidctl sweat about it.
2000-05-28 00:48:30 +00:00
oster 26b4598736 Components which match on everything but the mod_counter are
renegades, and must be handled correctly.  In particular, they should
be added to their old auto-config set, but then immediately released.
Failing to do otherwise means that they potentialy end up in a
different (and competing!) RAID set which may auto-configure in place
of the correct one, and cause all sorts of chaos at auto-configure
time.
2000-05-27 20:29:14 +00:00
oster e9b5b7aa5e Add a comment to clarify why we actually want the component label to
be considered a 'match' even if the mod_counter is wrong.
2000-05-27 19:12:03 +00:00
oster d2b2ed0970 Checking parity re-write status makes no sense on RAID 0, but let's
return something reasonable anyway.
2000-05-27 18:23:27 +00:00
thorpej b8322d5c23 Const poison the layout name. 2000-05-23 00:44:38 +00:00
thorpej 071aed40ac A foolish consistency; most parts of the kernel use bp->b_data, so
change these from bp->b_un.b_addr to bp->b_data, as well.  This also
allows us more flexibility to experiment with other data buffer types
hung off of struct buf.
2000-05-19 18:54:22 +00:00
minoura c2e8f67477 Add some missing casts of ioctl arg.
Obviously autoconfiguration wouldn't work on big-endian machines.
2000-05-19 04:53:25 +00:00
oster db11351ced Make sure the config structure allocated during autoconfiguration actually
gets initialized properly.  Should fix PR#9816.
2000-04-27 00:57:48 +00:00
oster 5845348e54 Revert last change (the last change was not necessarily desirable, and
had some other minor side-affects that were troublesome).
2000-04-17 19:35:12 +00:00
oster c71398f7a9 Don't allow configuration where the specified SectPerSU may result in IO larger
than MAXPHYS being sent to underlying devices.  Addresses PR#9868.
Will change if/when MAXPHYS goes bye-bye.
2000-04-16 03:24:26 +00:00
oster cf0b47bd0e Minor cleanup of unneeded verbosity. 2000-03-31 02:05:24 +00:00
oster cd61979606 Print out the 'root' status of a RAID set during autoconfiguration. 2000-03-31 01:20:43 +00:00
oster 8d702c4b54 Nuke 'register' from some function prototypes. 2000-03-30 13:39:07 +00:00
augustss 169ac5b3c1 Remove register declarations. 2000-03-30 12:41:09 +00:00
oster d0c76be757 cleanup function prototypes. 2000-03-27 03:25:17 +00:00
oster b97e06092d Shuffle some prototypes to a more appropriate location. 2000-03-27 03:01:33 +00:00
oster 2ee63332b3 Add bits for eventual support of deleteing components and moving
hot-spares into the main set.
2000-03-26 22:38:28 +00:00
oster d9da26f998 Nuke a function prototype that shouldn't be here. 2000-03-25 16:24:57 +00:00
oster e44151e8d6 Fix up some autoconfigure messages. In particular, don't try printing
the value of an uninitialized variable.  Noted by Luke Mewburn.
2000-03-22 01:41:41 +00:00
oster 7f288b4e0d Just return "100% done" when asked about reconstruction progress on
a RAID0 set.
2000-03-20 22:59:26 +00:00
soren 95054da1a1 Fix doubled 'the's in comments. 2000-03-13 23:52:25 +00:00
oster 7c57ac56d7 Cleanup a couple of function declarations. No functional changes. 2000-03-07 03:09:47 +00:00
oster 51ffb0924c Create a new rf_close_component() to handle vnode operations for closing
components.  Teach rf_UnconfigureVnodes() how to use it, and tell
the copyback and reconstruction code about it too.
2000-03-07 02:59:50 +00:00
oster ddebc1cad0 Move rf_UnconfigureVnodes to rf_netbsdkintf.c where it will be more at home.
Add prototype to rf_kintf.h, and nuke old prototypes from rf_disks.c and
rf_driver.c .
2000-03-07 02:28:05 +00:00
oster 33a55d022b rf_ protect the component label print routine, and make it more easily
available to the rest of RAIDframe.
2000-03-07 02:12:13 +00:00
oster dbf5d1f7a6 Nuke unused code. 2000-03-07 01:54:29 +00:00
oster 1231bd6d14 Umm... don't allow attempts to configure the same RAID device multiple times.
The check was there, but the return() was missing :(
2000-03-04 06:03:21 +00:00
oster 0049933f0f Reorganize some comments. 2000-03-04 04:22:34 +00:00
oster 194aba4e41 Garbage collect the (already disabled) "random" queue type. 2000-03-04 03:27:13 +00:00
oster 612e2e8f92 Nuke an unneeded #define. 2000-03-04 03:22:17 +00:00
oster 88a8d06a0b Use the common disk allocation code, rather doing things the old way. 2000-03-03 03:47:17 +00:00
oster 142175b1a1 Minor formatting cleanup. 2000-03-03 03:10:03 +00:00
oster 7b1139520e More minor cleanup. 2000-03-03 02:04:48 +00:00
oster 87f46374bb Minor cleanup. No functional changes. 2000-03-03 01:46:36 +00:00
oster 8cde772948 Oops.. Need to note the parity status when we unconfigure.
Noted by Aaron J. Grier. (Thanks!)
2000-02-29 16:54:29 +00:00
oster 8c46e74418 Nuke some debugging output that got left in by mistake. 2000-02-27 02:35:33 +00:00
oster 82419f5ae9 Only mark the components as CLEAN if it's the last thing we're doing.
Marking them CLEAN earlier is (currently) asking for trouble.
(XXX This could have been done more elegantly.)
2000-02-27 01:50:22 +00:00
oster d9c47013b2 Defopt 'RAID_AUTOCONFIG'. Adding 'options RAID_AUTOCONFIG' turns on
the component auto-detection and auto-configuration of RAID sets.
Also, add "#options RAID_AUTOCONFIG" to the GENERIC config files.
2000-02-26 17:35:33 +00:00
oster caa3932441 Minor cleanups. Remove extra debugging printouts. 2000-02-25 20:11:00 +00:00
oster 21243f6205 - ignore the mod_counter when checking to see if a component fits with the
rest of an autoconfig set.
- minor cleanups
2000-02-25 19:56:56 +00:00
oster 503220a18f - ignore components whose mod_counter values are too low.
- noting the mod_counter for autoconfigured sets would be a win too.
2000-02-25 19:56:32 +00:00
oster 8d63540a8c When we close autoconfigured components, we need to note that they
are no longer in 'autoconfigured' status.
2000-02-25 17:14:18 +00:00
oster a4f7f062fd - cleanup raidinit()
- cleanup rf_mountroot_hooks()
- various other cleanups.
2000-02-25 02:42:30 +00:00
oster 5716b5d6d1 Be *slightly* more consistent about the use of num and numraid in raidattach(). 2000-02-25 02:21:12 +00:00
oster e4e4483cb7 Fix a (slightly) bogus status message. 2000-02-25 02:06:34 +00:00
oster bdd659fc7f Deal with unconfiguring components in the autoconfigure case. 2000-02-24 23:39:21 +00:00
oster aea97a5a17 Oops... Missed commmitting this last night. Thanks to Matthias Scheler
for letting me know.
(Add the DiskQueueSW pointer)
2000-02-24 17:12:10 +00:00
oster e644abfe94 Make sure we close auto-configured components appropriately when
attempting a rebuild-in-place.
2000-02-24 04:39:41 +00:00
oster c5961cfba3 Garbage collect some unused stuff. Include rf_kintf.h for a
function prototype.
2000-02-24 03:52:15 +00:00
oster 851a2cdcd8 - record the pointer to the DiskQueueSW so we can use that when
we hot-add a spare.
- use the above info when adding a spare.
2000-02-24 03:48:41 +00:00
oster 9e81bc058e Now that we have the information available, use the general maxOutstanding
value for the RAID set, rather than looking at Queue[0][0] (which may not
exist).
2000-02-24 02:55:05 +00:00
oster 99f070bab8 - mod_counter needs to get incremented more often.
- use raid_init_component_labels instead of hand-rolling a component_label.
(missed doing this for the rf_used_spare case when updating component labels).
- fix serial number initialization in raid_init_component_labels
2000-02-24 01:23:05 +00:00
oster fb13ce76fc - make sure we note the parity status in the autoconfig case.
- also, make sure we grab the serial number from the component labels
when we autoconfig.
2000-02-24 01:22:32 +00:00
oster d91ecfbcfd Be more aggressive about updating component labels in the event
of a real component failure (or a simulated failure):
- add 'numNewFailures' to keep track of the number of disk failures
since mod_counter was last updated for each component label.
- make sure we call rf_update_component_labels() upon any component failure,
real or simulated.
2000-02-23 03:44:02 +00:00
oster e7f3dc2ec9 blockSize for the component label is already set correctly here. 2000-02-23 02:11:05 +00:00
oster 0c43bf18f0 - cleanup of more component label code
- make current default label values available everywhere
- make sure numBlocks and blockSize in component labels get initialized
for all component labels
- check for component size to be smaller than or equal to the partition size
when autoconfiguring
2000-02-23 02:04:21 +00:00
oster 6aaac32240 Do a better job of (re)initializing the component labels after
a reconstruct or a copyback.
2000-02-23 02:03:03 +00:00
oster d84e4ed019 Make a note of autoconfigured components. 2000-02-23 02:01:55 +00:00
oster e0ab2f3d0f Correct a comment. 2000-02-23 00:37:11 +00:00
oster 214822e08c Note the fact that the first arg of raidinit() may be bogus in
the autoconfig case (the value of the first arg never gets used, but...).
2000-02-22 23:13:15 +00:00
oster e8ff7f6155 Bounds-check the 'last unit' a little more closely. 2000-02-22 16:07:02 +00:00
oster fb56415023 Add a few comments, and an indicator of whether or not an autoconfig set
is 'rootable'.
2000-02-22 03:39:47 +00:00
oster bd2230fd09 - implement additional component checking before autoconfiguration
- make component label setting work again(!!!!)
2000-02-22 03:38:42 +00:00
oster afccbaa6d7 Umm.. let's set 'numraid' to something useful before we try to use it. 2000-02-21 23:33:45 +00:00
oster 7deba340d7 Some of these function names are bad enough that no one else would probably
pick them, but preface them with rf_ anyway.
2000-02-16 01:10:44 +00:00
oster 445591e874 Get recent changes into the tree:
- make component_label variables more consistent (==> clabel)
- re-work incorrect component configuration code
- re-work disk configuration code
- cleanup initial configuration of raidPtr info
- add auto-detection of components and RAID sets (Disabled, for now)
- allow / on RAID sets (Disabled, for now)
- rename "config_disk_queue" to "rf_ConfigureDiskQueue" and properly prototype
in rf_diskqueue.h
- protect some headers with #if _KERNEL  (XXX this needs to be fixed properly)
  and cleanup header formatting.
- expand the component labels (yes, they should be backward/forward compatible)
- other bits and pieces (some function names are still bogus, and will get
changed soon)
2000-02-13 04:53:57 +00:00
oster edc931efea Make this compile without warnings on alphas.
(Problem noted by Aaron J. Grier)
2000-02-12 16:06:27 +00:00
thorpej dc59bc1db3 Update for sys/buf.h/disksort_*() changes. 2000-01-21 23:39:55 +00:00
oster 138d8fef04 Fix typo + cleanup a bit. 2000-01-15 01:57:57 +00:00
oster ef035f5a7b Make more 80-column friendly. No functionality changes. 2000-01-14 04:03:52 +00:00
oster 11e019370e "fix" a serious problem with RF_AccTraceEntry_t tracerec stuff.
XXX the "fix" is incorrect, but that makes it consistent with
some of the other code here.  A this point you should *not* be
thinking about using this code. (At all.) (And I mean it.)
2000-01-14 01:00:26 +00:00
oster ee867c7fdf Add some debugging printfs. 2000-01-14 00:57:57 +00:00
oster ec84f30ddd If we can't malloc a RF_ShutdownList then we should return ENOMEM right away.
Waiting for more kernel memory to come along can cause more problems than
we're willing to deal with right now.
2000-01-13 23:41:18 +00:00
oster 2c4bbb1b26 At (closer to) 80-columns, this may actually be readable code. 2000-01-09 04:35:13 +00:00
oster f2a8aaee02 Garbage collect unused code. 2000-01-09 03:44:33 +00:00
oster 7ce0db89f9 Nuke more debugging stuff and cleanup a tad. 2000-01-09 03:39:13 +00:00
oster b0caf96f87 It's got to help to check the *right* value if you care what
RF_Malloc() is returning.
2000-01-09 03:28:11 +00:00
oster fbd3b6b396 Another one bites the dust. 2000-01-09 03:17:12 +00:00
oster 87ec1ad21b Nuke dependency on rf_diskthreads.h 2000-01-09 03:15:59 +00:00
oster 4a54cff7d7 Nuke dependencies on rf_cpuutils.h. 2000-01-09 03:14:32 +00:00
oster 23c4c71c8f By popular demand (Hi Thor!) make the cylinder size in a default
disklabel be the size of the (data part) of the stripe.
2000-01-09 02:56:13 +00:00
oster 754613774a rf_cpuutil.c isn't useful for the kernel driver.
*poof* *poof*
2000-01-09 02:23:21 +00:00
oster c8723703d2 Not sure why this file was still around since it's really not required.
*poof*
2000-01-09 02:05:12 +00:00
oster 6e92bd4525 Nuke unused debugging stuff. Clean up a whole bunch of comments. 2000-01-09 01:45:58 +00:00
oster a5dcdf8572 Nuke a couple of obsolete comments. 2000-01-09 01:34:29 +00:00
oster c8730b35e6 - move a bunch of function prototypes to rf_kintf.h
- general cleanup of a number of prototypes that were scattered around.
2000-01-09 01:29:27 +00:00
oster 08817bcd50 Nuke #if 0'ed code. 2000-01-09 01:12:05 +00:00