Commit Graph

507 Commits

Author SHA1 Message Date
obrien
c63dab466c Use __FBSDID().
Also some minor style cleanups.
2003-08-24 17:55:58 +00:00
rwatson
3a5e99ecfb #ifdef __i386__ the "int slice" definition that became i386-only with
recent Vinum changes.  Fixes non-i386 build on vinumio.c.

Accidental oversight of:	grog
Fix hopefully not minded by:	grog
2003-08-15 17:56:44 +00:00
grog
f7e1e299a6 vinum_scandisk:
Correctly handle additional disks without BIOS partition tables.
  Previously, vinum_scandisk stopped scanning additional disks for
  native partitions after any good partition was found.  This applies
  to all platforms, but was a particular problem on systems without
  BIOS partition tables.

Submitted by: harti
2003-08-15 04:36:53 +00:00
grog
b65c4c7c91 Drop Giant when calling the disk drivers directly, and reacquire
afterwards.  This fixes the Vinum breakage in -CURRENT.

Breakage explained by: phk
2003-08-15 03:57:15 +00:00
grog
080591fcba free_drive: Free the drive even if it's referenced. I don't know what
I was smoking when I wrote this stuff, but another fix resulted in
every partition in the system being entered as a "referenced" drive.
2003-07-01 07:53:54 +00:00
harti
f98fc09d13 Check compatibility partitions on all archs. This makes vinum
work on sparc64 again, because on sparc i386-compatibility
partitions just happen to have the same name as sparc native partitions.

Okay-ed by: grog@
2003-06-23 14:49:57 +00:00
grog
5793355a48 check_drive: If the partition isn't a Vinum drive, release it again
and return NULL.

vinum_scandisk: Don't handle NULL device pointers.
	        Only look at compatibility partition for i386.  This
	        is a kludge which should go away once I have adequate
	        documentation for the New World Order.

Together, these fixes remove occasional error messages about
non-existent drives.  They may also fix a number of problems that have
been reported without a PR.

PRs: None
2003-06-15 01:42:01 +00:00
grog
56abee7676 Silence a warning. 2003-06-12 06:17:12 +00:00
grog
c861fe1606 Remove "raw" and "label" keywords. 2003-06-12 05:45:45 +00:00
grog
2c6023fbdb vinum_bounds_check: Don't check the label sector if the architecture
doesn't have one.  The test was bogus on these architectures, but
recent changes broke it altogether.

Prompted by:  phk

This should fix the recent SPARC 64 build problems.
2003-06-12 05:34:42 +00:00
grog
368d45b0cd Remove VINUM_LABEL ioctl. It has been deprecated since December 1998,
and recent changes broke it altogether.

Prompted by:  phk
2003-06-12 05:32:31 +00:00
grog
0041f93ec3 Remove write_volume_label, the implementation of VINUM_LABEL ioctl.
It has been deprecated since December 1998, and recent changes broke
it altogether.

Prompted by:  phk
2003-06-12 05:32:00 +00:00
grog
f4d2c8703b Remove kw_raw. I've forgotten what it was intended for, and it was
probably obsoleted by some changes a couple of months ago.
2003-06-12 05:28:18 +00:00
grog
f089554add Don't deregister the kld on resetconfig, only when we're really ready
to unload.  This would cause a panic on the second resetconfig.

Start Vinum at boot time at SI_SUB_RAID, not SI_SUB_VINUM.
SI_SUB_VINUM was there first, but there's no real distinction, and
SI_SUB_RAID is a more neutral name.

Submitted by:  hmp
2003-06-03 04:51:31 +00:00
grog
40b279d760 Change the way the plex lock mutexes work. Previously they were part
of the struct plex, which tore apart the mutex linked lists when the
plex table was expanded.  Now we maintain a pool of mutexes (currently
32) to be shared by all plexes.  This is still a lot better than the
splhigh() method used in other architectures.

expand_table: Add parameters file and line if we're debugging.

Approved by: re (jhb)
2003-05-23 01:15:55 +00:00
grog
835b492a3b Change the way the plex lock mutexes work. Previously they were part
of the struct plex, which tore apart the mutex linked lists when the
plex table was expanded.  Now we maintain a pool of mutexes (currently
32) to be shared by all plexes.  This is still a lot better than the
splhigh() method used in other architectures.

Add and clarify comments.

Approved by: re (jhb)
2003-05-23 01:15:30 +00:00
grog
25103020fb expand_table: Add parameters file and line if we're debugging.
MMalloc, vinum_meminfo: Use strlcpy to copy file name.

Approved by: re (jhb)
2003-05-23 01:15:01 +00:00
grog
23a0f80a76 Change the way the plex lock mutexes work. Previously they were part
of the struct plex, which tore apart the mutex linked lists when the
plex table was expanded.  Now we maintain a pool of mutexes (currently
32) to be shared by all plexes.  This is still a lot better than the
splhigh() method used in other architectures.

Approved by: re (jhb)
2003-05-23 01:14:35 +00:00
grog
1ae9be9a1f detachobject: Update volume config after detaching a plex.
update_volume_config: Remove redundant diskconfig parameter.

Approved by: re (jhb)
2003-05-23 01:14:13 +00:00
grog
18dc607a3b Change the way the plex lock mutexes work. Previously they were part
of the struct plex, which tore apart the mutex linked lists when the
plex table was expanded.  Now we maintain a pool of mutexes (currently
32) to be shared by all plexes.  This is still a lot better than the
splhigh() method used in other architectures.

update_volume_config: Remove redundant diskconfig parameter.

expand_table: Add parameters file and line if we're debugging.

Approved by: re (jhb)
2003-05-23 01:13:43 +00:00
grog
eeb76b20a0 Change many strcpys to strlcpys, etc.
Submitted by:	   Ted Unangst <tedu@stanford.edu>

Correct some inaccurate and badly formatted comments.

config_subdisk: If our drive is down, ensure that the subdisk is
		crashed.  Previously it was possible for the subdisk
		to be up when the drive was down.

Change the way the plex lock mutexes work.  Previously they were part
of the struct plex, which tore apart the mutex linked lists when the
plex table was expanded.  Now we maintain a pool of mutexes (currently
32) to be shared by all plexes.  This is still a lot better than the
splhigh() method used in other architectures.

update_volume_config: Remove redundant diskconfig parameter.

Approved by: re (jhb)
2003-05-23 01:13:10 +00:00
grog
487ef7f7cb print_config:
Change config format slightly to save plex preferences correctly.

vinum_scandisk: reinitialise volatile pointer after function call.
This is the "deafc0de" bug.

Approved by: re (scottl)
2003-05-19 02:21:31 +00:00
grog
2d5f55a20d ioctl VINUM_READCONFIG: Don't lock configuration here. vinum_scandisk
needs to do it anyway to handle the startup case.  This is
            part of a fix for the recently reported hangs.

Approved by:  re (scottl)
2003-05-08 00:36:20 +00:00
obrien
9f119f13a5 Fix usages of %ll[dx] with typedef'ed created types.
In the kernel it is wrong 99.9 times out of 100 to use %ll rather than cast
to intmax_t and use %j.
2003-05-05 16:56:44 +00:00
grog
09dfe669b9 Add sector size member to subdisk, plex and volume objects. 2003-05-05 08:43:15 +00:00
grog
92d716447b Remove an accidental #include.
Maintain sector sizes for all objects, not just for drives.  Some of
this could do with improvement: in particular, we get an error if the
components of an object have different sector sizes.

Clean up some comments.
2003-05-05 08:42:42 +00:00
grog
59cfc462ec Implement DIOCGSECTORSIZE and DIOCGMEDIASIZE ioctls. It appears that
they are now necessary to use newfs(8).
2003-05-05 08:41:53 +00:00
grog
a7d933895c Correct failed checkin. Only one of the hunks in the last checkin
seems to have made it.
2003-05-05 07:50:15 +00:00
grog
2d0afa20c6 Clarify comments. 2003-05-05 05:35:52 +00:00
grog
fd40d662ef Add "preferred" keyword. 2003-05-05 05:35:28 +00:00
grog
f207e15d0e White space fixes. 2003-05-05 05:34:39 +00:00
grog
25618ca226 Remove DIOCGDINFO ioctl. This almost makes newfs work again without
the -v option, though it's not clear that it won't bite us elsewhere.

Forgotten by: phk

Implement setreadpol() function for the VINUM_READPOL ioctl.

Submitted by:  Allan Saddi <allan@saddi.com>
2003-05-05 05:33:59 +00:00
grog
6b74835fff vinum_scandisk: Make sure the config is locked before we mess around
with it.

Finally implement read policies.  The previous "implementation" didn't
work because it referred to plexes which were almost invariably when
referred to.  Instead, deprecate the "prefer" keyword for volumes
(though it's still there for the moment) and add a keyword "preferred"
to the plex definition.  The relationship is like this:

Old:

  vol foo ... prefer foo.p3

New:

  plex foo.p3 volume foo preferred

print_config: Print "preferred" where appropriate.
	      No longer print "prefer" on volume config entries.
2003-05-05 05:32:52 +00:00
grog
27e027d255 Finally implement read policies. The previous "implementation" didn't
work because it referred to plexes which were almost invariably when
referred to.  Instead, deprecate the "prefer" keyword for volumes
(though it's still there for the moment) and add a keyword "preferred"
to the plex definition.  The relationship is like this:

Old:

  vol foo ... prefer foo.p3

New:

  plex foo.p3 volume foo preferred

give_plex_to_volume: set preferred plex if specified on plex
definition entry.  This involves adding a parameter to the function to
specify the preferred plex.

config_plex: Implement preferred keyword.
2003-05-05 05:32:15 +00:00
grog
b5095f91a4 free_vinum: Rearrange sequence of actions to avoid potential race
condition when shutting down.
2003-05-05 05:28:15 +00:00
grog
97dff1dbec Update declaration of vinum_scandisk (only one parameter). 2003-05-04 05:19:48 +00:00
grog
8d151fcbbf Rewrite of startup code:
Add ioctl VINUM_READCONFIG which implements both the "read" and
"start" commands in vinum(8).  Aim for marginally better error
messages when something goes wrong.
2003-05-04 05:16:02 +00:00
grog
cfcc0b70ac Rewrite of startup code:
Add ioctl VINUM_READCONFIG which implements both the "read" and
"start" commands in vinum(8).
2003-05-04 05:15:32 +00:00
grog
2e6dc6c5e4 Rewrite of startup code:
parse_config: Remove kw_read case.  It's not used any more.

parse_user_config: Remove check for failed read.
2003-05-04 05:15:07 +00:00
grog
5a2ba746ae Rewrite of startup code:
vinumattach: Move the startup code to vinum_scandisk.
2003-05-04 05:13:45 +00:00
grog
1f97a57472 check_drive: If we find an existing drive which is "up" or "down",
just return it.  Don't try to reinitialize it.  This should fix a
number of inconsistencies that some people encountered with "vinum
start".

PR:  30588
PR:  43475
2003-05-02 06:04:19 +00:00
grog
b15ffb20fc White space changes. 2003-05-02 01:39:11 +00:00
grog
9fa30633ed Note when we issue a request to the disk driver, so that we can
measure the time it spends.
2003-05-01 13:06:00 +00:00
grog
9294238540 Rewrite minor number decoding. Now we have only three types of
object: subdisks, plexes and volumes.  The encoding for plexes and
subdisks no longer reflects the object to which they belong.  The
super devices are high-order volume numbers.  This gives vastly more
potential volumes (4 million instead of 256).
2003-05-01 01:35:03 +00:00
grog
94787ab431 For consistency's sake, on command failure, throw 1, not -1.
Rewrite minor number decoding.  Now we have only three types of
object: subdisks, plexes and volumes.  The encoding for plexes and
subdisks no longer reflects the object to which they belong.  The
super devices are high-order volume numbers.  This gives vastly more
potential volumes (4 million instead of 256).
2003-05-01 01:34:38 +00:00
grog
f5210909e5 Rewrite minor number decoding. Now we have only three types of
object: subdisks, plexes and volumes.  The encoding for plexes and
subdisks no longer reflects the object to which they belong.  The
super devices are high-order volume numbers.  This gives vastly more
potential volumes (4 million instead of 256).

Correct formats for some error messages.  Don't cast the value to
match the format.
2003-05-01 01:34:05 +00:00
grog
30844b0b17 Rewrite minor number decoding. Now we have only three types of
object: subdisks, plexes and volumes.  The encoding for plexes and
subdisks no longer reflects the object to which they belong.  The
super devices are high-order volume numbers.  This gives vastly more
potential volumes (4 million instead of 256).

Tidy up comments.

Check for null rqgs.  This continue to be reported, though I can't
work out why.

Correct formats for some error messages.  Don't cast the value to
match the format.

Use microtime, not getmicrotime, for timing debug entries.
2003-05-01 01:33:34 +00:00
grog
afee8cda86 Terminate a comment. 2003-05-01 01:33:01 +00:00
grog
d881a18c88 Don't make definition of kw_debug dependent on VINUMDEBUG. In
userland, define the keyword even if the kernel module doesn't have
debug code.
2003-05-01 01:32:31 +00:00
grog
0d67c021fc Use strrchr, not rindex. This is for compatibility with other
systems, and requires a #define.
2003-05-01 01:32:08 +00:00