Commit Graph

59875 Commits

Author SHA1 Message Date
John Baldwin
12635f9c89 Unlock the VM lock at the end of munlock() instead of locking it again. 2001-05-22 06:07:36 +00:00
John Baldwin
874468957d Sort includes from previous commit. 2001-05-22 05:35:45 +00:00
Dima Dorfman
a8dbafbe87 Correct the vm_mtx handling; specifically, don't acquire it in
shm_deallocate_segment because shmexit_myhook calls it, and the latter
should always be called with it already held.

Submitted by:	dwmalone, dd
Approved by:	alfred
2001-05-22 03:56:26 +00:00
Greg Lehey
218692e305 Update description of the stripe size created by vinum_stripe,
vinum_mirror, vinum_raid4, vinum_raid5.

Correct typos.

Show new output of the 'list' and 'ls' commands.

Update examples to use 279 kB stripe sizes instead of 256 kB.

Clarify some text.

Remove the description of the 'invalid ioctl' messages which now no
longer occur.

Add a description of the 'retryerrors' keyword.
2001-05-22 02:40:40 +00:00
Greg Lehey
8fded8ae87 Major tidy up. Add explicit header files, thus enabling the .c files
to avoid including the kernel headers.

Move a number of definitions of userland functions from
dev/vinum/vinumext.h.

Desired by:	   bde

This commit is the first of a general cleanup of the header files..
It won't be enough to make bde happy.

Remove vinum_perror and associated DEVBUG definition.
2001-05-22 02:39:48 +00:00
Greg Lehey
598607ea9a Tidy up header files. Don't include stuff we don't need.
Use userland expurgated versions of kernel structures, since that's
what the ioctls return now.

Remove vinum_perror.

main: Check kernel version with userland version in _vinum_conf.  This
      field is a constant which gets incremented every time the
      kernel-userland interface changes.  This enables vinum(8) to
      check for the correct kernel version and to produce a useful
      message if it doesn't match.  For previous versions, which don't
      have a version number, the length of the structure is different,
      so we can recognize it via the EINVAL return from ioctl.

Supply count parameter to tokenize().

Change method of recognizing active devfs: replace devfs_is_active
with (complemented) no_devfs.

make_devices: remove references to devfs.  If we're running devfs,  we
don't need to call make_devices at all.

vinum_makedev (user command 'makedev'): Print a warning message if
devfs is running and don't do anything else.
2001-05-22 02:39:24 +00:00
Greg Lehey
5814a0b1e9 Tidy up header files. Don't include stuff we don't need.
Remove vinum_perror.

Modify 'list' brief printout to fit in 80 columns.

Modify 'ls' brief printout to show the drive to which the subdisk
before instead of the plex offset, which is usually less interesting.
The verbose printout remains unchanged.

Use userland expurgated versions of kernel structures, since that's
what the ioctls return now.

Move checkupdates here to simplify header file mess.
2001-05-22 02:38:52 +00:00
Greg Lehey
e829a4ea32 Tidy up header files. Don't include stuff we don't need.
Remove 'vinum_perror'.

Only call make_devices if we're not running devfs.

Use userland expurgated versions of kernel structures, since that's
what the ioctls return now.

Update help list, which was lagging behind reality.

checkupdates: move to list.c to simplify header file mess.

vinum_stripe, vinum_mirror, vinum_raid4, vinum_raid5: change the
default stripe size from 256 k to 279 k, thus hopefully spreading
superblocks more evenly.
2001-05-22 02:38:11 +00:00
Greg Lehey
c6ef641d24 Add a field 'version' to vinum_conf. This field is a constant which
gets incremented every time the kernel-userland interface changes.
This enables vinum(8) to check for the correct kernel version and to
produce a useful message if it doesn't match.

Requested by:	Too many to count.

Move the definitions of struct drive, sd, plex and volume to
vinumobj.h.

Add a new debug flag, DEBUG_LOCKREQS, which logs only lock requests.
2001-05-22 02:37:28 +00:00
Greg Lehey
2e387f1bd3 vinumstart: If a write request is for a RAID-[45] plex or a volume
with more than one plex, the data will be accessed
            multiple times.  During this time, userland code could
            potentially modify the buffer, thus causing data
            corruption.  In the case of a multi-plexed volume this
            might be cosmetic, but in the case of a RAID-[45] plex it
            can cause severe data corruption which only becomes
            evident after a drive failure.  Avoid this situation by
            making a copy of the data buffer before using it.

	    Note that this solution does not guarantee any particular
	    content of the buffer, just that it remains unchanged for
	    the duration of the request.

Suggested by:	alfred
2001-05-22 02:36:47 +00:00
Greg Lehey
5be7546b83 tokenize: Take third parameter specifying the maximum number of
parameters to return.  This code is used both in userland and in the
kernel.
2001-05-22 02:35:57 +00:00
Greg Lehey
24ad5cd24b Cosmetics: wrap long lines to be < 80 characters. 2001-05-22 02:35:19 +00:00
Greg Lehey
c4d4f4147d Add a new debug flag, DEBUG_LOCKREQS, which logs only lock requests.
Use this instead of DEBUG_LASTREQS to decide whether to log lock
requests.

MFS:

vinumlock: Catch a potential race condition where one process is
           waiting for a lock, and between the time it is woken and
           it retries the lock, another process gets it and places it
           in the first entry in the table.

           This problem has not been observed, but it's possible, and
           it's easy enough to fix.

Submitted by:   tegge

vinumunlock: Catch a real bug capable of hanging a system.  When
             releasing a lock, vinumunlock() called wakeup_one.  This
             caused wakeups to sometimes get lost.  After due
             consideration, we think that this is due to the fact that
             you can't guarantee that some other process is also
             waiting on the same address.  This makes wakeup_one a
             very dangerous function to use.
2001-05-22 02:34:30 +00:00
Greg Lehey
cf65a3dc63 Change ioctls to use the expurgated userland version of the Vinum
structures.
2001-05-22 02:33:32 +00:00
Greg Lehey
acac8659d7 format_config: Replace long format lines.
Requested by:  bde

Add retryerrors keyword.

vinum_scandisk: Print a different message if an inadvertent start
command did not find any additional drives.  The previous message "no
drives found" confused and worried many people.

MFS:

vinum_open: Recognize Mylex devices as storage devices.
2001-05-22 02:32:22 +00:00
Greg Lehey
ab15c118bf complete_rqe:
In case of error, check the VF_RETRYERRORS flag in the subdisk and
  don't take the subdisk down if it's set, just retry the I/O.

  Requested by:	peter

  If the buffer has been copied (XFR_COPYBUF), release the copied
  buffer when the I/O completes.

  Suggested by:	alfred
2001-05-22 02:31:08 +00:00
Greg Lehey
0e414969e0 Remove unnecessary declarations of userland functions.
Desired by:	   bde

This commit is the first of a general cleanup of the header files..
It won't be enough to make bde happy.

Move debug definitions from vinumhdr.h.
2001-05-22 02:30:44 +00:00
Greg Lehey
177bb9657f config_sd: Add code to recognize "retryerrors" keyword.
config_plex: Don't create the device until we're finished.

parse_config: check for corrupted configuration, thus avoiding a
potential panic.

remove_sd_entry: Restore structure.
2001-05-22 02:29:54 +00:00
Greg Lehey
7e18e4ffbc free_vinum: Change some explicit struct member references to the SD,
PLEX and VOL.
2001-05-22 02:29:15 +00:00
Greg Lehey
2c4a6d9016 Add xferinfo flag bit for copied buffers.
Create a new struct rangelockinfo.  In revision 1.21 of vinumlock.c,
the plex info was removed from struct rangelock, since it wasn't
needed there.  It *is* needed for trace information, however, so use
struct rangelockinfo for that.
2001-05-22 02:28:55 +00:00
Greg Lehey
1739a10826 New file containing definitions for separate views of objects for
userland and kernel.
2001-05-22 01:41:12 +00:00
Alfred Perlstein
a4d22b8035 Remove KASSERT test for sleeping on mv_mtx, instead let WITNESS catch
it.

Requested by: jhb
2001-05-22 00:58:20 +00:00
John Baldwin
4edf4a58e6 Sort includes. 2001-05-22 00:56:25 +00:00
Dima Dorfman
21fa152ffa Fix a grammar nit.
PR:		27520
Submitted by:	Michael Lucas <mwlucas@blackhelicopters.org>
2001-05-22 00:29:42 +00:00
John Baldwin
c4f96c5f83 Remove a few more spl's I missed earlier.
Reported by:	Michael Harnois <mdharnois@home.com>
Pointy hat:	me
2001-05-22 00:09:26 +00:00
Dima Dorfman
692bb1c3bb Introduce a background_fsck rc.conf option which allows the user to
enable or disable background fsck'ing all in one shot.  Default is
currently 'YES'.

Reviewed by:	jkh
2001-05-22 00:05:48 +00:00
John Baldwin
2178ff8b9f Sort includes from previous commit. 2001-05-21 23:19:50 +00:00
David Malone
38f612a1e6 Fix constness warning introduced in syslog.h 1.21. 2001-05-21 22:13:55 +00:00
Daniel C. Sobral
3bb753ca7d s/Cthulu/Cthulhu/
Alas, the first one is a repeat in a slightly different format and
ought to be removed (or the other copy). I'll leave that to more
enterprising souls, though (Cthulhu loves enterprising souls).

MFC after:	3 days
2001-05-21 21:30:45 +00:00
Guido van Rooij
5345e89b9d Disable SIGHUP while getting the login name.
Reviewed by:	security-officer
2001-05-21 20:19:59 +00:00
John Baldwin
9dceb26b23 Sort includes. 2001-05-21 18:52:02 +00:00
John Baldwin
270b041d95 - Assert that the vm mutex is held in pipe_free_kmem().
- Don't release the vm mutex early in pipespace() but instead hold it
  across vm_object_deallocate() if vm_map_find() returns an error and
  across pipe_free_kmem() if vm_map_find() succeeds.
- Add a XXX above a zfree() since zalloc already has its own locking,
  one would hope that zfree() wouldn't need the vm lock.
2001-05-21 18:47:17 +00:00
John Baldwin
d8aad40c88 Axe unneeded spl()'s. 2001-05-21 18:30:50 +00:00
Bruce A. Mah
25baf47f30 Update comment: We don't use vn(4) anymore in -CURRENT, we use md(4). 2001-05-21 18:15:01 +00:00
Poul-Henning Kamp
c69ff89710 syslog.h fails to compile with -Wwrite-strings
PR:		27492
Submitted by:	Alexey V. Neyman <avn@any.ru>
2001-05-21 17:32:47 +00:00
Ruslan Ermilov
a6882bcc15 Work around the side effect of src/include/Makefile,v 1.137 changes.
(The proper fix is to add missing #include directives.)
2001-05-21 17:06:26 +00:00
Warner Losh
80c16af982 Add note about pccard rototill and swapping breakage. 2001-05-21 16:40:50 +00:00
Andrew Gallatin
08eceb4f4b Change pmap_emulate_reference() so that it only touches the vm_page
flags if it is safe to do so, otherwise it will just alter the pmap state
(eg, clear the appropriate PG_FOx bits).

This gets alpha booting in the face of the vm_mtx introduction.

Reviewed by: dfr
2001-05-21 16:09:29 +00:00
Andrew Gallatin
2ee7c91e2e catch these files up to their i386 neighbors to make alpha boot
prior to the vm_mtx
2001-05-21 16:04:24 +00:00
Yoshihiro Takahashi
bd0432d8b0 Update pc98 memory probe functions.
- pc98_getmemsize() function returns available memory size under 16MB.
 - getmemsize() function is merged from PC-AT's one.

Submitted by:	chi@bd.mbn.or.jp (Chiharu Shibata) and
		NOKUBI Hirotaka <nokubi@ff.iij4u.or.jp>
2001-05-21 12:51:44 +00:00
Ruslan Ermilov
7ec00975de Get rid of LSYMSUBDIRS by merely setting up symlinks to LNOHEADERDIRS. 2001-05-21 12:37:04 +00:00
Yoshihiro Takahashi
c48d35696d Merged from sys/i386/isa/npx.c revisions 1.99 and 1.100. 2001-05-21 12:20:22 +00:00
Yoshihiro Takahashi
2877ab5bdb Merged from sys/i386/i386/machdep.c revisions 1.452 and 1.453. 2001-05-21 11:57:54 +00:00
Yoshihiro Takahashi
a93f8c6e6e Merged from sys/boot/i386/btx/btx/btx.s revision 1.24. 2001-05-21 11:49:21 +00:00
Yoshihiro Takahashi
42751ee048 Added pc98 note menu.
Submitted by:	Nobuyuki Koganemaru <n-kogane@syd.odn.ne.jp>
2001-05-21 11:25:58 +00:00
Hajimu UMEMOTO
1022dd3dcc Correct error message of an example.
Obtained from:	KAME
2001-05-21 10:05:36 +00:00
Hellmuth Michaelis
078aac9c09 Submitted by: Juha-Matti Liukkonen, Cubical Solutions Ltd (jml@cubical.fi)
Reviewed by:	hm

Bug in i4btel driver read routine corrected. The conditions in the
while() clause caused the receive queue to be referenced before checking
if a channel is connected, leading to kernel panic (do a 'dd
if=/dev/i4btel0 of=/dev/null' on an unconnected tel device, panic will
follow). Correction was to reorder the while clause conditions to check
for connectedness first.
2001-05-21 09:24:48 +00:00
Warner Losh
13ab4e6dc1 Move allocation of ExCA registers from the base driver into the bus
attachment code.
2001-05-21 07:32:46 +00:00
Warner Losh
2003c3f530 Move setting of Vcc bit to before the vcc switch statement. The
datasheets I have seem to indicate that generally this bit is viewed
as a toggle.  Correct comments to match code.
2001-05-21 05:49:15 +00:00
Warner Losh
57462c010c Next step on the road to pci: power taming.
Work through the various power commands and convert them from a "is
this a foo controller or a foo' controller or a foo''' controller" to
a cabability based scheme.  We have bits in the softc that tell us
what kind of power control scheme the controller uses, rather than
relying on being able to enumerate them all.  Cardbus bridges are
numerous, but nearly all implement the i82365sl-DF scheme (well, a few
implement cirrus CL-PD67xx, but those were made by Cirrus Logic!).

Add a pointer back to the softc in each pcic_slot so we can access
these flags.

Add comments that talk about the issues here.  Also note in passing
that there are two differ Vpp schemes in use and that we may need to
adjust the code to deal with both of them.  Note why it usually works
now.

We have 5 power management modes right now: KING, AB, DF, PD and VG.
AB is for the i82365 stpes A, B and C.  DF is for step DF.  PD is the
cirrus logic extensions for 3.3V while VG is the VADEM extensions for
3.3V.  KING is for the IBM KING controller found on some old cards.
# I'm looking for one of those old cards or a laptop that has the KING
# bridge in it.

We have to still cheat and treat the AB parts like the DF parts
because pci isn't here yet.  As far as I can tell, this is harmless
for actual old parts and necessary to work with 3.3V cards in some
laptops.

This almost eliminates all tests for controller in the code.  There
are still a few unrelated to power that need taming as well.
2001-05-21 04:44:14 +00:00