Commit Graph

501 Commits

Author SHA1 Message Date
thorpej a180cee23b Pool deals fairly well with physical memory shortage, but it doesn't
deal with shortages of the VM maps where the backing pages are mapped
(usually kmem_map).  Try to deal with this:

* Group all information about the backend allocator for a pool in a
  separate structure.  The pool references this structure, rather than
  the individual fields.
* Change the pool_init() API accordingly, and adjust all callers.
* Link all pools using the same backend allocator on a list.
* The backend allocator is responsible for waiting for physical memory
  to become available, but will still fail if it cannot callocate KVA
  space for the pages.  If this happens, carefully drain all pools using
  the same backend allocator, so that some KVA space can be freed.
* Change pool_reclaim() to indicate if it actually succeeded in freeing
  some pages, and use that information to make draining easier and more
  efficient.
* Get rid of PR_URGENT.  There was only one use of it, and it could be
  dealt with by the caller.

From art@openbsd.org.
2002-03-08 20:48:27 +00:00
wiz 1b7f309f0a Correct misspellings of "failed". 2002-03-04 01:38:31 +00:00
oster 71a4ca8acd Bah.. Not sure how those ";"'s got missed :-( 2002-01-19 22:20:48 +00:00
oster 9872e4c410 Let's not bother building a number of infrequently used RAID types.
The code is still there if people want it, but these other RAID
types (using various DECLUSTERING and SPARING techniques) arn't being
used in practise.  Saves about 100K on i386 GENERIC kernels.
2002-01-19 02:50:54 +00:00
oster e38e358cb2 Only include some debugging printf's if DEBUG is defined. 2002-01-19 01:51:51 +00:00
thorpej bd4e2862b0 We only need a single component buffer pool. 2002-01-09 04:21:43 +00:00
oster 2ad74785a4 Move a bunch of debugging stuff to be only used if DEBUG is turned on. 2002-01-09 03:10:19 +00:00
oster 19c2127b85 Revert previous. Need to be more careful with what gets chopped out. 2002-01-07 05:30:53 +00:00
oster 345de5b80a Some of this stuff is really just for debugging, so compile it only if
DEBUG is defined.
2002-01-07 02:27:42 +00:00
oster af9b7112ab #if 0 rf_SetReconfiguredMode() since it is unused now, but may be
needed someday.
2002-01-07 01:58:03 +00:00
oster 3b488c3f27 Fix an off-by-one error when autoconfig is hunting for a free RAID
device in the rare event that the one it wants is already in use.
Thanks to Wolfgang Stukenbrock for noticing the bug and filing the PR.
This fix addresses PR#14862.
2001-12-16 22:57:32 +00:00
lukem 371fd3fc10 use #ifdef RAID_AUTOCONFIG (for consistency with the rest of the kernel) 2001-11-28 05:39:13 +00:00
oster d11d1bd6fe Cleanup some whitespace that indent got wrong a long time ago. 2001-11-20 02:37:29 +00:00
lukem 2565646230 don't need <sys/types.h> when including <sys/param.h> 2001-11-15 09:47:59 +00:00
lukem a3746e00b7 add RCSIDs 2001-11-13 07:11:12 +00:00
oster 525f4a9bed Backout a line that accidentally got included when the .h reorg went in. 2001-10-06 00:47:46 +00:00
oster 035a63f6d3 More #if 0's bite the dust. 2001-10-05 15:41:23 +00:00
oster 9d1d665dac Nuke some #if 0 stuff. 2001-10-05 15:33:12 +00:00
oster d00ed4116f Tidy up the #includes a bit. (coulda/shoulda done that with last commit.) 2001-10-04 17:42:29 +00:00
oster 2621bd1124 rf_options.h isn't needed here. 2001-10-04 17:41:17 +00:00
oster aa7a54f593 If rf_options.h needs to be include it, then include it. Don't rely on
another .h file to pull it in.
2001-10-04 17:39:18 +00:00
oster dad0d4578c Nuke a couple of unused extern variable declarations. 2001-10-04 17:31:01 +00:00
oster 32c731329a These have been completely replaced by raidframevar.h and raidframeio.h. 2001-10-04 16:08:51 +00:00
oster fe686dfde7 Setup installation mechanism for <dev/raidframe/raidframevar.h> and
<dev/raidframe/raidframeio.h>
2001-10-04 16:04:16 +00:00
oster 765e00d3de Step 2 of the disentanglement. We now look to <dev/raidframe/*> for
the stuff that used to live in rf_types.h, rf_raidframe.h, rf_layout.h,
rf_netbsd.h, rf_raid.h, rf_decluster,h, and a few other places.
Believe it or not, when this is all done, things will be cleaner.

No functional changes to RAIDframe.
2001-10-04 15:58:51 +00:00
oster 46a6eb1477 Step 1 of the disentangling of RAIDframe's .h files:
raidframevar.h - contains bits of rf_types.h, rf_layout.h,
rf_netbsd.h, rf_raid.h, and rf_decluster.h.

raidframeio.h - contains the bits needed for doing IOCTL's w/
RAIDframe.

These bits will be visible to userland.
2001-10-04 15:43:57 +00:00
oster d7a81df519 RF_DEV2RAIDID isn't used anywhere anymore. Bye bye. 2001-09-26 03:01:19 +00:00
oster de43684ab7 - rf_types.h doesn't really need to pull in rf_archs.h
- for *.c, don't rely on rf_types.h to pull in rf_archs.h
2001-09-26 02:52:57 +00:00
oster e475673b85 Nuke an unused typedef. 2001-09-25 02:56:13 +00:00
wiz 456dff6cb8 Spell 'occurred' with two 'r's. 2001-09-16 16:34:23 +00:00
thorpej 1cbbd5c37c Disable all of the RF_ASSERT()s by default, enabling them if the
RAID_DIAGNOSTIC option is specified in the kernel configuration
file.
2001-09-01 23:50:43 +00:00
oster 99020323e6 Nuke the 5 NULL parameters from rf_DoAccess(). Observe that 4 of
the variables are passed directly to rf_AllocRaidAccDesc(), and the 5th
isn't even used.  Hunt them down and nuke them too.
2001-07-27 03:30:07 +00:00
thorpej 228b23427f bcmp -> memcmp 2001-07-18 06:46:46 +00:00
thorpej cf56c44a86 bzero -> memset 2001-07-18 06:45:33 +00:00
oster 81f5c58b58 If we're closing the last partition on a RAID set and the system is
being shutdown, then unconfigure the RAID set too.  This fixes a number
of issues with doing proper unconfigures/shutdowns of multi-level RAID
sets.

Thanks to Jason Thorpe and Bill Squier for the ideas/suggestions on
how/where to do this, and to Bill Squier for testing.
2001-07-16 15:50:27 +00:00
oster bdfad3793f We don't need to check for raidautoconfig here, so nuke it and
clean up a little.
2001-06-21 03:07:04 +00:00
oster 76d322c58c #if out a few more bits that arn't required if we are not doing
PQ or RAID6.
2001-06-20 03:09:23 +00:00
oster 0e8f8213af A bunch of these bits are only needed for the EVENODD stuff.
Shaves a little better than 1K off the size of an i386 kernel.
2001-06-19 03:25:16 +00:00
oster 669f5cc5a5 It's silly to need a parity rebuild after a reconstruction has completed.
If we've just reconstructed a disk, then the parity is known to
be correct.  (XXX doesn't hold for RAID 6!)
2001-06-14 02:35:56 +00:00
mrg 054673b07c #endif /* takes no argument */ 2001-06-08 12:51:17 +00:00
oster 856e0a920e A value of 1 for tracks/cylinder in the disklabel is apparently sub-optimal.
Thus we choose "4 * number_of_columns" as a more reasonable
value (until someone comes up with something better).
This pretends to properly address PR#11989.
2001-04-05 02:48:51 +00:00
mrg 8e0434ce99 include <sys/param.h> before <sys/ioctl.h> 2001-02-03 12:51:10 +00:00
oster cc2a28f2c0 Un-'__P'ify. 2001-01-27 20:42:20 +00:00
oster 1949425ffc Nuke some bogus debug code that was already '#if 0'ed out. 2001-01-27 20:18:55 +00:00
oster e6d8ca0dee Cosmetic cleanup of some comments, and nuke an unused #define. 2001-01-27 20:10:49 +00:00
oster 75ea8b428e Having moved some of the bits needed by raidctl into rf_configure.c, we
no longer need those bits here.  In particular, this file is now only
used in the kernel, and that allows us to clean up a lot of cruft.
2001-01-27 19:34:43 +00:00
oster 3edd34f0be More #if's. This needs some serious rototillage, but a few #if's will
suffice for now.
2001-01-27 02:13:34 +00:00
oster c4a426333f My.. what a twisty little maze of #defines and dependencies. Some of this
code is used for more than anticipated, and I missed a few checks last
night.  Thanks to Bernd Ernesti for poking me about this.
2001-01-26 14:06:16 +00:00
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
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
oster cdb6add0f7 Nuke desc->tid. 2000-01-09 00:00:18 +00:00
oster 37c75452f4 Time's up. This file is no longer needed. "toodles." *punt* 2000-01-08 23:54:26 +00:00
oster 418d4b8471 - more cleanup of rf_get_threadid() and debugging printfs 2000-01-08 23:45:05 +00:00
oster 524894d6f2 Make raidPtr a 'RF_Raid_t *' like it's supposed to be. 2000-01-08 23:02:16 +00:00
oster 04719e3adc - nuke calls to rf_get_threadid() and associated #include
- change a bunch of debugging printfs from
  "[%d] ...", tid   (where tid is the "thread id")
to
  "raid%d: ...", raidPtr->raidid
- other minor rototillage
2000-01-08 22:57:30 +00:00
oster 23864e9422 Bail if rf_numParityRegions is not > 0. Cleanup a comment. 2000-01-08 05:13:26 +00:00
oster 0d2f49b054 Nuke stale comment. 2000-01-08 03:49:37 +00:00
oster e7fe279817 Minor cleanup. 2000-01-08 03:34:31 +00:00
oster db96c5344b Nuke some (now) incorrect comments. More minor cleanup. 2000-01-08 02:04:06 +00:00
oster ef979643a7 Replace raidPtrs[unit] with just raidPtr, and assign the former to the
later early on in raidioctl().  Code is easier to read now too.
2000-01-08 01:52:42 +00:00
oster b9a1fe405c Minor tillage on the raidioctl() stuff. More cleanup to follow.
No functional changes.
2000-01-08 01:37:37 +00:00
oster a4ea38dbe8 Nuke an unneeded #ifdef (__NetBSD__) 2000-01-08 01:18:36 +00:00
oster 91273673e7 In RAIDFRAME_CONFIGURE, don't set values in raidPtrs[unit] unless
the configuration was successful.  Noted by Peter Galbavy of OpenBSD.
2000-01-07 13:57:20 +00:00
oster bf2d4a40db rf_GetNextReconEvent() is already prototyped in rf_revent.h.
minor cleanup
2000-01-07 03:56:14 +00:00
oster 12dacda256 nuke one call to rf_get_threadid() and cleanup rf_State_Cleanup a bit. 2000-01-07 03:47:15 +00:00
oster bf081bf6eb Nuke: #include "rf_threadid.h" and call to rf_get_threadid(). 2000-01-07 03:43:39 +00:00
oster 48301a8dae Nuke: #include "rf_threadid.h". 2000-01-07 03:40:56 +00:00
oster e5ce17d0eb Nuke RF_DECLARE_GLOBAL_THREADID, rf_setup_threadid(), rf_shutdown_threadid(),
and rf_assign_threadid().  rf_threadid.h, your days are numbered.
2000-01-07 03:25:34 +00:00
oster 86f362fb97 Nuke unused #define. 2000-01-07 03:04:41 +00:00
oster 5f144eaa4b Shorten IO_BUF_ERR macro by one (unused) arg. 2000-01-07 03:03:44 +00:00
oster 51380e0e8c - bail if we can't allocate memory for raid_softc's. Set 'numraid' as
appropriate for that condition.
- nuke some debugging stuff that we hope we'll never need again
- minor cleanups
2000-01-06 02:06:41 +00:00
oster d4dfa2a664 Make sure we really get something back from RF_Malloc before we use it. 2000-01-05 04:15:30 +00:00
oster 77ab4d1598 - update RF_CREATE_THREAD to handle a 'process name' argument.
- fire up a new thread for parity re-writes, copybacks, and reconstructs.
  The ioctl's which trigger these actions now return immediately.
- add progress accounting for the above actions.
- minor rototillage of rf_netbsdkintf.c to deal with all of the above.
2000-01-05 02:57:28 +00:00
oster 28c2380f21 Nuke a bunch of debugging cruft. No functional changes. 1999-12-15 02:02:16 +00:00
oster fe0726b921 Whoops! Neglected to initialize the buffer queues for anything other
than raid0.  Fix that...
1999-12-14 15:27:00 +00:00
oster c8753ea619 Rework how we do the 'wakeup' when an IO completes. 1999-12-12 20:52:37 +00:00
oster 706e3c13c0 Rename rf_DoAccessKernel() to raidstart() and cleanup arguments. 1999-12-12 20:52:16 +00:00
oster e8a639b1df Rototill the IO throttle code. Rename rf_DoAccessKernel() to raidstart()
and cleanup arguments.  While we're here, cleanup raidstrategy(), and nuke
a bunch of unused debugging stuff.

RAIDframe + softdeps now play very nicely together.
1999-12-12 20:51:41 +00:00
oster a0d72cb555 Trust only the data disk if the mirror is not known to be up-to-date.
(this should have been committed with a previous fix for the same
problem in another function in this file :( )
1999-12-09 02:26:09 +00:00
oster bd19af5aad Nuke what's left of the DFSTRACE stuff. 1999-12-07 02:54:08 +00:00
oster e65f9b7c87 More cleanup. DKUSAGE (what little was left of it) goes bye-bye. 1999-12-07 02:40:27 +00:00
oster a38b721e5f Nuke the last few bits of RF_DEBUG_ATOMIC that should have
disappeared a while back.
1999-12-07 02:13:28 +00:00
oster bed152a4e7 We don't support RF_DAG_TEST_ACCESS. 1999-12-03 03:35:30 +00:00
oster 128e2e90c5 Nuke some duplicate code. 1999-12-03 03:18:45 +00:00
oster a038f90588 Kernel memory is not to be wasted. If we're bailing out because of an error,
give any allocated memory back to the kernel so someone else can use it.
1999-12-03 03:06:44 +00:00
oster 3888a71ad1 Move LIST_INIT() to a more appropriate place. 1999-12-03 02:43:22 +00:00
oster 5fd68b5d02 We must initialize bp->b_dep in InitBP(). 1999-11-18 13:28:06 +00:00
oster e589155692 Remove some minor stuff that wasn't right, and wasn't even really used. 1999-11-17 01:16:37 +00:00
oster 3949e74f78 If we have a choice: do not trust the parity disk for read
balancing in a RAID 1 set if we know that the parity might not
be up-to-date.  Thanks to Thor for bringing this to my attention.
1999-11-09 03:07:20 +00:00
oster fe5b29ca42 Nuke unused prototype. 1999-09-08 02:01:55 +00:00
oster 83abb87d9a Garbage collect more unused stuff. 1999-09-05 03:05:55 +00:00
oster 9c01870db1 Remove more unused stuff. 1999-09-05 02:54:09 +00:00
oster cfbdda8843 Garbage collect some more stuff. 1999-09-05 02:24:58 +00:00
oster 6158faa69d Cleanup a bit more. 1999-09-05 01:58:11 +00:00
oster e57673d0d4 Remove one of the two bzero calls in RF_Calloc -- the 2nd one doesn't
buy us anything at all.
1999-09-05 01:46:35 +00:00
oster d8144e5848 More cleanup of unused stuff. This time we nuke a bunch of memory
allocation stuff.
1999-09-04 21:11:21 +00:00
oster cfd861fcd8 Minor cleanup of (now) unneeded RF_UTILITY checks. 1999-09-04 16:26:30 +00:00
oster b1615831d2 Nuke some unused code which, were it enabled, might be useful for
performance measurement, but which would cause data corruption.
1999-08-26 02:40:27 +00:00
oster 770de7bb5a Print a error message instead of panicing in rf_RecoveryPQFunc(). 1999-08-15 03:44:46 +00:00
oster d516e7b571 Make these compile with RF_INCLUDE_RAID6. 1999-08-15 02:36:40 +00:00
oster ff6d7dd494 Cleanup a bit. 1999-08-15 02:36:03 +00:00
oster 07cc4855f1 Minor cleanup. No functional changes. 1999-08-14 23:34:18 +00:00
oster 4ba14d22b0 Fix an 'off-by-one' error in a RF_ASSERT which meant that a reconstruct
would panic in the case where the stripe width was 1 block.
1999-08-14 21:44:24 +00:00
oster 740b9848cc Decrease the number of outstanding IO's threashold slightly.
The previous value may have been too high in some instances.
1999-08-14 03:47:07 +00:00
oster 6409e641a6 Remove a 'struct proc *'-passing abomination that's been bugging me
for quite some time.
1999-08-14 03:10:03 +00:00
oster 4a058e82c5 Correct and/or improve detection of bogus row/column values
passed in via ioctls.
1999-08-14 02:41:36 +00:00
oster db2eaf18cf rf_sys.h does not need to be #included in any of these files, and, actually,
is no longer needed at all.
1999-08-13 03:41:52 +00:00
oster 1ec5208866 This file is no longer needed. 1999-08-13 03:31:20 +00:00
oster 1aa6ce1041 Garbage collect rpcc(). 1999-08-13 03:27:46 +00:00
oster 02acd1910a First kick at cleaning up the RF_ETIMER code. New timer handling code
provided by Peter Galbavy via OpenBSD.
1999-08-13 03:26:55 +00:00
oster eca431e87c Nuke configuration of ETimer stuff during main configuration. 1999-08-13 03:25:01 +00:00
oster 5cab826918 Clean up reconstruction accounting a bit. While it worked before, it was
slightly broken in the case where the RAID set did not support reconstruction.
1999-08-13 01:43:33 +00:00
oster 33e458640f Garbage collect unused struct rf_test_acc. 1999-08-11 02:20:35 +00:00
oster 31b98d3572 When reporting the status of a component during configuration,
provide more intuitive information about whether a component is clean
or not.
1999-08-10 22:56:20 +00:00
oster 620eda50c7 Don't allow reconstructs, copybacks, or forced failures of components if
using a RAID 0, since RAID 0 can't handle those sorts of things.
1999-08-10 22:46:59 +00:00
oster 0b08c839eb Don't go ape if there is a problem verifying the parity. Note the condition
and inform the user (as opposed to panicing the system!).
1999-08-10 22:19:27 +00:00
oster 49efd10006 Oops. Make minor change that I forgot when adding the parity check ioctl. 1999-08-10 21:41:37 +00:00
oster a3aefdaee3 Add support for easily checking the parity status from userland.
Also: spl protect rf_RewriteParity().
1999-08-10 18:18:30 +00:00
oster a531d8c31e Trying to rebuild parity on a degraded set is bogus, so don't allow that.
Also, check sooner for a RAID 0 set, since rewriting parity makes no
sense there either.
1999-08-10 01:53:26 +00:00