Commit Graph

253 Commits

Author SHA1 Message Date
oster e47b177bc0 Nobody calls these bits if we arn't doing RAID5 with rotated spare stuff.
Add an #if.
2001-01-26 05:16:58 +00:00
oster 1763f954c7 These bits are only needed for the interdecluster stuff.. wrap them
with an #if.
2001-01-26 05:09:13 +00:00
oster 7833c33e99 Whoops.. Leave them on.. (for now.) 2001-01-26 04:43:16 +00:00
oster a40eef11ac Give the parity declustering code their own 'RAID arch' types, and
allow us to turn them off if desired.
2001-01-26 04:40:03 +00:00
oster 61a2ee28fb Lots of stuff here that is only used for some of the 'fancier' RAID types.
Don't compile it if we arn't going to use it.
2001-01-26 04:27:16 +00:00
oster bcc70a3f37 Clean up some INDENT warnings. (yes, these have been there for a while!) 2001-01-26 04:14:14 +00:00
oster 0a5ca1547d Various parts of this file are only needed by the even/odd and PQ
RAID types.  Don't include those bits if we arn't doing even/odd or PQ stuff.
2001-01-26 04:05:08 +00:00
oster 9880e186ec Don't build the stuff in this file if RF_INCLUDE_EVENODD is not defined. 2001-01-26 03:50:53 +00:00
oster c77d3c20a8 Ensure we update the 'partitionSize' field of the component labels
when doing a reconstruct or a copyback.  If we don't, junk might be
there, and that could cause the component to be not correctly
autoconfigured on reboot.  Thanks to Simon Burge for helping track this down.
2001-01-26 02:16:24 +00:00
fvdl d040bd5908 Return error in the case of using ODIOCGDINFO or ODIOCGDEFLABEL when
the number of partitions is > OLDMAXPARTITIONS. This is better
than silently truncating the label (don't want to silently throw
away partitions when using an old disklabel binary on a label with
> 8 partitions). From Enami Tsugutomo.
2001-01-08 02:03:45 +00:00
fvdl e2d1c1f926 Adapt all disk devices in MI directories to handle ODIOC* calls
for ports that have bumped MAXPARTITIONS (and thus define
__HAVE_OLD_DISKLABEL).
2001-01-07 18:09:01 +00:00
oster b36a1a085e For the RF_ASSERT() and RF_PANIC() macros, call a function to do the
sprintf, instead of doing the sprintf in the macros.  This means just
1 copy of each of the error messages, chopping about about 16K off the
size of an i386 kernel.  Thanks to Simon Burge and Enami Tsugutomo
for providing the inspiration to do this.
2000-12-15 02:12:58 +00:00
oster 7a8eea351b Fix a couple of warnings about uninitialized variables. Thanks go to
Frank van der Linden for pointing these out.
2000-12-05 01:35:56 +00:00
fvdl b6d9ce390e Comment out 2 cases of unitialized variable use (only used when
debugging is switched on, though).
2000-12-04 11:35:46 +00:00
chs c62d17a551 rationalize the use of b_flags for geteblk() buffers.
rather than assigning to the whole field, set or clear individual flags,
which implies that the B_BUSY and B_INVAL flags will remain set.
this allows us to make the assertion in brelse() that B_BUSY is set,
which is the purpose of all this.
2000-11-20 08:24:08 +00:00
oster d349cdf1ef Move disk_busy() and disk_unbusy() to more sane locations. Values
reported by 'systat iostat' and friends are now much more correct for
RAIDframe devices.  Thanks to Andrew Doran for poking me about this,
and for suggestions on and review of the changes.
2000-10-20 02:24:45 +00:00
oster f9a49b32bf Don't touch a failed component at all. Thanks to Robert Elz (kre) for
noting the problem and providing additional comments.
2000-10-17 03:39:41 +00:00
oster fc40c38df6 Minor fixup for a printf(). Noted by Robert Elz. 2000-10-12 03:28:49 +00:00
oster 3ee0550572 convert tsleep()->ltsleep(), which makes the kernel complain less
when compiled with LOCKDEBUG.
2000-09-21 01:45:46 +00:00
oster 014e17fbdc Correct a few calls to VOP_CLOSE(). 2000-09-21 01:37:35 +00:00
oster 32802fc83f Be consistent: use mcpair->cond instead of mcpair->flag.
This also lets us clean up a bunch of cruft.
2000-09-11 02:23:14 +00:00
oster e8645831a5 Only reset the timer value if it actually accumlated time.
Otherwise it may never accumulate any time, and the recon delay
will never happen.
2000-09-11 00:22:45 +00:00
oster 3fa62c4642 Make sure we are passing a locked vp to VOP_CLOSE. 2000-09-08 01:36:35 +00:00
thorpej a6b7f5a17d Use RF_WAIT_COND() to avoid locking errors. 2000-08-20 16:51:03 +00:00
thorpej d06cb9ab29 RF_COND_WAIT(): use ltsleep().
RF_SIGNAL_COND(): use wakeup_one().
2000-08-20 16:15:31 +00:00
oster 49742b54fa Remove a bogus VOP_UNLOCK. 2000-08-19 18:20:07 +00:00
oster 3a17c9470d Don't try to initialize a component label on a failed component. 2000-08-19 18:07:36 +00:00
oster dc4b749234 Fix the status reporting for copybacks. Thanks to Hubert Feyrer for
reporting the problem.
2000-07-14 15:26:29 +00:00
oster ce2b2827e5 Nuke a printf that *I* added at least as early as Nov, 1998, and which is
as bogus now as it was then.
2000-06-29 00:22:27 +00:00
oster 7a0d138818 Nuke a (mostly) now-incorrect comment. 2000-06-11 03:35:38 +00:00
oster 6dcc553fae Remove outdated comment. 2000-06-04 02:16:05 +00:00
oster 0b63accce0 Merge rf_update_component_labels() and rf_final_update_component_labels(). 2000-06-04 02:05:13 +00:00
oster 1dcc041500 Minor prototype cleanup. 2000-06-04 01:39:49 +00:00
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