Commit Graph

21 Commits

Author SHA1 Message Date
Greg Lehey
1c49cd396f Import RAID-5 code.
Add Cybernet copyright.

OK'd-by:     Chuck Jacobus <chuck@cybernet.com>

update_plex_state:
  If any subdisk in the plex is initializing, set the plex to
  initializing state.  This gets rid of the ugly corrupt/degraded/up
  transitions which previously occurred.

  Desired-by: Steve Taylor <staylor@cybernet.com>

sddownstate:
  Add new function, used by checksdstate.

checksdstate:
  Let sddownstate decide what status to return.
1999-08-07 08:14:01 +00:00
Greg Lehey
e65333e92e Allow to unconditionally up subdisks with the -f option.
Change returns for failed state changes from EINVAL to EBUSY.

Suggested-by:  Bernd Walter <ticso@cicely.de>
1999-07-02 07:57:28 +00:00
Greg Lehey
9faf05037c set_drive_state:
If the drive goes down, queue a close to the daemon.  In many cases
  this function gets called in process context, so it could do it
  directly, but it's more trouble finding out where we came from than
  getting the daemon to do it.
1999-06-24 08:57:16 +00:00
Greg Lehey
560863926b Remove old grunge, including references to sys/disk.h (which is going
away).

Submitted-by:	phk
1999-05-07 01:35:29 +00:00
Greg Lehey
b3a717f1a8 set_sd_state:
Don't change state from reborn to reborn.  This caused a silly
  warning message.
1999-05-02 07:50:09 +00:00
Greg Lehey
f83e10d7ca set_sd_state:
If a drive is down, take "empty" sds down.  Previously they were
  unchanged, which cause set_plex_state to take them up under some
  circumstances.
1999-04-10 08:12:12 +00:00
Greg Lehey
8c1e93bf98 Revise use of the vinum_conf variables drives_used, subdisks_used,
plexes_used and volumes_used.  Now these fields are only informative,
and the <object>_allocated count is used for searches, etc.  This also
required checking the object state before doing things with the
presumed object.

Problems-reported-by: Kiril Mitev <kiril@ideaglobal.com>
1999-03-30 04:59:32 +00:00
Greg Lehey
d7c4c59f03 set_sd_state: Handle sd_empty correctly. In particular, require
force to bring a subdisk of a RAID-5 plex out of this
		state.

update_plex_state:  Rewrite yet again.
1999-03-28 08:54:48 +00:00
Greg Lehey
1d2ade2043 Correct the text of an obscure error message. 1999-03-24 00:43:05 +00:00
Greg Lehey
f9976b8861 Part of removing vol->opencount: now we just use a flag. 1999-03-13 07:39:17 +00:00
Greg Lehey
75fff3fead Change printf() calls to log() calls.
set_sd_state: allow stop command to stop a reborn subdisk.
1999-03-02 06:57:08 +00:00
Greg Lehey
9e0aa8e9b8 Correct some indentation
Implicitly-desired-by: bde

update_plex_state:  Handle empty RAID-5 plexes correctly
1999-02-11 06:44:46 +00:00
Greg Lehey
7f1050341c Change multiline comments to start with a lone /* and end with a */,
apparently in accordance with style(9).

Complained-about-by: bde
1999-01-29 01:17:54 +00:00
Matthew Dillon
b4e36adf1c Fix warnings preparing for -Wall -Wcast-qual
Also disable one usb module in LINT due to fatal compilation errors,
    temporary.
1999-01-27 20:09:21 +00:00
Greg Lehey
6d930639c3 Include Peter Wemm's renaming and restructuring
Change from lkm to kld

Serious rewrite.  No longer call set_<foo>_state to set the state
based only on other objects; instead, add functions
update_<foo>_state, which determine what the state should be by
themselves.  This allows the set_<foo>_state functions to shrink
enough to be almost intelligible.

Remove flags setstate_recurse and setstate_recursing.

Remove plex defective regions and unmapped regions, which were
maintained but not used.

Change code to allow daemon to perform operations formerly kludged
into an interrupt context.  Remove the DIRTYCONFIG kludge.
1999-01-21 00:40:32 +00:00
Peter Wemm
c285ca1254 Some relatively minor tweaks to enable vinum to be built into a static
kernel as a pseudo-device.  The changes were:
- #ifdef DEBUG -> #ifdef VINUMDEBUG
- opt_vinum.h for holding above config variable
- Fixing up a few stray problems where DEBUG wasn't optional.
- config.c -> vinumconfig.c (there's already a config.o)
- Other *.c -> vinum*.c (wasn't strictly necessary, but done in case we end
  up with something else conflicting later on and we might have to have yet
  more repository copies of files).
- include file paths fixups..  (ie: get them all from the kernel tree
  instead of partly from the kernel and partly from /usr/include/machine)

I've spoken with Greg about this..  I hope this doesn't mess him around
too much..
1998-12-28 16:28:24 +00:00
Peter Wemm
ef2dbe9885 If I've done this right, revive the vinum code in it's now home after it
was savaged in the blood bath a few hours ago.
1998-12-28 04:56:24 +00:00
Søren Schmidt
c74cd3590f Remove LKM's depricated by modules. 1998-12-27 19:38:15 +00:00
Greg Lehey
8b71433847 Don't close drives when called from interrupt context, set a flag for
the top half to do it.

Put in a dubious check for subdisk integrity when trying to bring
up a plex where others are already up.  This particular kludge is
crying out for a rewrite of the whole state code.

Add code to set_plex_state and set_volume_state to defer updates when
called from an interrupt context.  This doesn't happen yet, but it
could do.
1998-11-02 04:10:45 +00:00
Greg Lehey
721fbc5ae0 config.c:
config_drive:
    Catch an instance of anonymous drives.  Doubtless many remain.

interrupt.c:
  complete_rqe:
    Call logrq to log iodone events if DEBUG_LASTREQS is set.

    Call set_sd_state with setstate_noupdate to avoid buffered I/O out
    of interrupt context.

    Use define DEBUG_RESID instead of constant.

memory.c:
  Remove dead expandrq() function

  Malloc:
    Remove directory component of file names in malloc table.

  Add function vinum_rqinfo (part of the request tracing stuff).

request.c:
  Add function logrq (part of the request tracing stuff).

  vinumstrategy:
    Check whether config needs to be written to disk, do it if so.
    This is a stopgap until the Vinum daemon (bacchusd?  oenologistd?)
    is written.

    If DEBUG_LASTREQS is set, call logrq to log user buffer headers.

  launch_requests:
    Correct format of debug output to console.

    If DEBUG_LASTREQS is set, call logrq to log request elements.

request.h:
  Add definitions for request trace.

state.c:
  set_sd_state:
    Check flags for setstate_noupdate.  If set, don't write the config
    to disk, just set global VF_DIRTYCONFIG flag.  This is part of the
    kludge to avoid writing config from an interrupt context.

vinumext.h:
    Add declaration for vinum_rqinfo, put inside #ifdef DEBUG
    Remove dead macro expandrq

vinumio.h:
  Increase maximum ioctl reply length to 4 kB if DEBUG is set.
  Define VINUM_RQINFO ioctl if DEBUG is set.

vinumioctl.c:
  vinumioctl:
    Change implementation of VINUM_DEBUG ioctl: use a debug flag
    (DEBUG_REMOTEGDB) to decide whether to go into remote debugging or
    not.

    Implement VINUM_RQINFO.

vinumkw.h:
  Define kw_info even when not debugging.

vinumvar.h:
  Define VF_DIRTYCONFIG
  Add pointers to request info to vinum_info if DEBUG is set.
  Define setstate_noupdate
  Define additional debug bits DEBUG_RESID, DEBUG_LASTREQS and
  DEBUG_REMOTEGDB.
1998-10-21 08:32:32 +00:00
Greg Lehey
e4381fa521 Import base vinum lkm sources 1998-09-16 05:56:21 +00:00