Commit Graph

17031 Commits

Author SHA1 Message Date
dillon
af7bbb9a33 Make FreeBSD less conservative in determining when to return a cookie
error for a directory.  I have made this change after a great deal of
    review although I cannot be absolutely sure that this meets the spec.

    The issue devolves into whether changes in an underlying (UFS) directory
    can cause NFS directory blocks to be renumbered.  My read of the code
    indicates that NFS directory blocks will not be renumbered, which means
    that the cookies should still remain valid after a change is made to
    the underlying directory.  This being the case, a cookie error should
    not be returned when a change is made to the underlying directory and,
    instead, the NFS client should rely on mtime detection to invalidate and
    reload the directory.

    The use of mtime is problematic in of itself, due to insufficient
    resolution, which is why I believe the original conservative error
    handling was done.  Still, there have been dozens of bug reports by
    people needing solaris<->FreeBSD interoperability and these have to
    be accomodated.
1999-09-29 17:14:58 +00:00
marcel
bd000d73ad sigset_t change (part 4 of 5)
-----------------------------

The compatibility code and/or emulators have been updated:

iBCS2 now mostly uses the older syscalls. SVR4 now properly
handles all signals. This has been achieved by using the
new sigset_t throughout the emulator. The Linuxulator has
been severely updated. Internally the new Linux sigset_t is
made the default. These are then mapped to and from the
new FreeBSD sigset_t.

Also, rt_sigsuspend has been implemented in the Linuxulator.
Implementing this syscall basicly caused all this sigset_t
changing in the first place and the syscall has been used
throughout the change as a means for testing. It basicly is
too much work to undo the implementation so that it can
later be added again.

A special note on the use of sv_sigtbl and sv_sigsize in
struct sysentvec:
Every signal larger than sv_sigsize is not translated and is
passed on to the signal handler unmodified. Signals in the
range 1 upto and including sv_sigsize are translated.
The rationale is that only the system defined signals need to
be translated.

The emulators also have been updated so that the translation
tables are only indexed for valid (system defined) signals.
This change also fixes the translation bug already in the
SVR4 emulator.
1999-09-29 15:12:18 +00:00
marcel
a16d76cb56 sigset_t change (part 3 of 5)
-----------------------------

By introducing a new sigframe so that the signal handler operates
on the new siginfo_t and on ucontext_t instead of sigcontext, we
now need two version of sendsig and sigreturn.

A flag in struct proc determines whether the process expects an
old sigframe or a new sigframe. The signal trampoline handles
which sigreturn to call. It does this by testing for a magic
cookie in the frame.

The alpha uses osigreturn to implement longjmp. This means that
osigreturn is not only used for compatibility with existing
binaries. To handle the new sigset_t, setjmp saves it in
sc_reserved (see NOTE).

the struct sigframe has been moved from frame.h to sigframe.h
to handle the complex header dependencies that was caused by
the new sigframe.

NOTE: For the i386, the size of jmp_buf has been increased to hold
      the new sigset_t. On the alpha this has been prevented by
      using sc_reserved in sigcontext.
1999-09-29 15:06:27 +00:00
marcel
d5e8d714b9 sigset_t change (part 2 of 5)
-----------------------------

The core of the signalling code has been rewritten to operate
on the new sigset_t. No methodological changes have been made.
Most references to a sigset_t object are through macros (see
signalvar.h) to create a level of abstraction and to provide
a basis for further improvements.

The NSIG constant has not been changed to reflect the maximum
number of signals possible. The reason is that it breaks
programs (especially shells) which assume that all signals
have a non-null name in sys_signame. See src/bin/sh/trap.c
for an example. Instead _SIG_MAXSIG has been introduced to
hold the maximum signal possible with the new sigset_t.

struct sigprop has been moved from signalvar.h to kern_sig.c
because a) it is only used there, and b) access must be done
though function sigprop(). The latter because the table doesn't
holds properties for all signals, but only for the first NSIG
signals.

signal.h has been reorganized to make reading easier and to
add the new and/or modified structures. The "old" structures
are moved to signalvar.h to prevent namespace polution.

Especially the coda filesystem suffers from the change, because
it contained lines like (p->p_sigmask == SIGIO), which is easy
to do for integral types, but not for compound types.

NOTE: kdump (and port linux_kdump) must be recompiled.

Thanks to Garrett Wollman and Daniel Eischen for pressing the
importance of changing sigreturn as well.
1999-09-29 15:03:48 +00:00
marcel
a77a86a323 sigset_t change (part 1 of 5)
-----------------------------

Rename sigaction, sigprocmask, sigpending and sigsuspend to
osigaction, osigprocmask, osigpending and osigsuspend (resp)
and add new syscalls for them to support the new sisgset_t
without breaking existing binaries.

Change the prototype of sigaltstack to use the typedef stack_t
instead of struct sigaltstack to reflect that it is SUSv2
compliant.

Also, rename sigreturn to osigreturn and add a new syscall
to support the modified stackframe. The change is caused by
sigreturn operating on ucontext_t now and the fact that
siginfo_t has been updated to conform to SUSv2.
1999-09-29 15:01:21 +00:00
dcs
104201a6c3 Fix world-breaking bug, add $FreeBSD$ tag.
This happened to be my first "for real" broken world. I had broken
it once before, but nobody noticed, so it didn't count.

So, how do I get the "I broke world and all I got was the lousy t-shirt"
t-shirt?
1999-09-29 10:58:43 +00:00
dfr
a46bfcf00d Add ID for ESS ES1869. 1999-09-29 07:27:35 +00:00
dcs
6a5ea9437a Bring in ficl version 2.03. No version bump for loader. 1999-09-29 04:43:16 +00:00
grog
0b4dce3508 struct plex: Add variables checkblock and rebuildblock to keep track
of parity check and rebuild operations.  This enables us
             to stop the operation and restart at a later time.

enum parityop: Trivial enum to decide what parityops() is going to do.
1999-09-28 22:58:07 +00:00
grog
ceed056964 revive_block: set b_resid correctly.
parityops: New function to check and rebuild RAID-5 parity blocks.
Not yet usable.
1999-09-28 22:57:29 +00:00
grog
6f15a47d21 logrq: add sdiodone case.
launch_requests: Remove debug code

sdio: Reformat log call.
1999-09-28 22:56:54 +00:00
grog
e26d973c1a Don't count iterations while waiting for a lock to become free. 1999-09-28 22:56:04 +00:00
grog
5a83a31cac Add ioctls VINUM_CHECKPARITY and VINUM_RESETPARITY, still to be fully
implemented.
1999-09-28 22:55:37 +00:00
grog
870bf32856 Reduce MAX_IOCTL_REPLY to 1024; the previous value was more than ioctl
could stand.

Define the correct return lengths for a number of ioctls.

Add ioctls VINUM_CHECKPARITY and VINUM_RESETPARITY, still to be fully
implemented.
1999-09-28 22:54:58 +00:00
grog
6f7810dec0 open_drive: Don't call set_drive_state to take a drive down, do it
ourselves.  This breaks a vicious circle which caused
            vinum to dereference a null vp if device nodes were
            missing.

Reported-by:	Brad Chisholm <sasblc@unx.sas.com>
		Alec Wolman <wolman@cs.washington.edu>

check_drive: Don't take a drive down if it's only referenced.

read_drive: Remove unused variable.
1999-09-28 22:46:39 +00:00
grog
0baa5f682a sdio_done: Log events if DEBUG_LASTREQS set. 1999-09-28 22:45:21 +00:00
grog
98afc1e9a0 Change remove_drive_entry
Add parityops
1999-09-28 22:43:59 +00:00
grog
555e3536e5 Remove some superfluous comments.
get_empty_volume: initialize plexes to -1 (not allocated)

remove_drive_entry:
  Remove recurse parameter (there's nothing below a drive in the hierarchy).
  Use remove_sd_entry to remove sds, don't do it ourselves.
  Log errors, don't throw rude remarks.

remove_plex_entry:
  Don't use plex->subdisks as a loop limit, it gets changed in the
     loop.  This caused some removals to only remove half the subdisks.
  Change logging of some "impossible" situations.

remove_volume_entry:
  Use remove_plex_entry to remove plexes, don't do it ourselves.

update_sd_config:
  Use set_sd_state to do the work.
1999-09-28 22:43:07 +00:00
grog
4ce980b705 Minor formatting changes (7th attempt) 1999-09-28 22:42:06 +00:00
grog
1df3ed8d59 Add loginfo type for sdiodone. 1999-09-28 22:27:10 +00:00
cg
f1bbb0150a * add a non-reset device- will not reset the channel on open. you
will have to mknod yourself for now.
* don't eat the first write()
* partial rvplayer fix- don't panic on unaligned writes unless our
  feeder chain requires them for downconversion.  a fuller fix is
  on the way.
1999-09-28 21:43:35 +00:00
cg
172b4dfca3 add a missing blank line 1999-09-28 20:24:28 +00:00
cg
80a5b6a3fa add the ad1816 driver 1999-09-28 20:02:44 +00:00
cg
378e4ff407 seperate the ad1816 driver from the mss driver since it shares no code 1999-09-28 20:00:06 +00:00
imp
199022b994 Use rmand_get_bus{tag,handle} rather than hard wiring things to
I386_BUS_SPACE_IO.  Compiles now on the Alpha, but likely will not
work due to bus space address <-> virtual address mapping bogons that
work for i386 but not alpha.
1999-09-28 19:59:41 +00:00
pb
3b30ad4229 In sbflush(), don't exit the while loop too early: this can cause
an empty mbuf to stay in the queue, then causing a needless panic
because sb_cc == 0 and sb_mbcnt != 0.

But we still need to panic rather than endlessly looping if, for
some reason, sb_cc == 0 and there are non-empty mbufs in the queue.

PR:		kern/11988
Reviewed by:	fenner
1999-09-28 12:59:18 +00:00
phk
5e9f92ecf7 Introduce ttyread() and ttywrite() which do the canonical thing.
Use them in many tty drivers.

Reviewed by: julian, bde
1999-09-28 11:45:31 +00:00
dfr
9f4fe5b99e Add another ID for the AWE64. 1999-09-28 08:25:08 +00:00
kato
54071ce792 Sync w/ sys/i386/isa/pcaudio.c revision 1.54. 1999-09-28 08:19:53 +00:00
kato
b890e4e89d Removed aha driver. 1999-09-28 08:16:37 +00:00
kato
b00a7b2457 Sync w/ sys/i386/conf/files.i386 revision 1.274. 1999-09-28 08:07:42 +00:00
peter
61f9e39f75 Reconnect 'bktr' now that world won't (I hope) break again from it.
'make depend' was falling over in it before.
1999-09-28 07:28:59 +00:00
peter
561d362f97 Make the bktr module build. The Makefile was badly mangled, including
leaving the ".c" out of most of the SRCS= source files.
1999-09-28 07:23:59 +00:00
dillon
a8c800a898 Make sure file after VOP_OPEN is VMIO'd when transfering control from
a lower layer to an upper layer.  I'm not sure how necessary this is
    for reading.

    Fix bug in union_lookup() (note: there are probably still several bugs
    in union_lookup()).  This one set lerror as a side effect without
    setting lowervp, causing copyup code further on down to crash on a null
    lowervp pointer.  Changed the side effect to use a temporary variable
    instead.
1999-09-28 05:48:39 +00:00
mjacob
0c5cf0d49b Ooops- forgot to commit this.
PR:		14009
Submitted by:	jreynold@primenet.com
1999-09-28 05:14:52 +00:00
steve
90a55f822a Fix breakage caused by last commit. Also accommodate the new interfaces
to the bpf* routines so this driver has a fighting chance of actually
working once it's compiled.

Silently approved by:	freebsd-alpha@freebsd.org
1999-09-28 03:42:32 +00:00
imp
ef5c865ec5 /tmp/cvswGS523 1999-09-28 02:45:34 +00:00
imp
6565c98a63 Newbusification of aha. dfr sent me the first cut, and I made it
work.  Be more verbose when one cannot allocate IRQ, et al since this
is a common configuration problem.  The cards have the IRQ soft wired
into their BIOS and do not try to do collision detection.  This can
cause problems when this IRQ is the same as another card/device.

The PNP hasn't been tested.  My PNP board is in a deployed system.
I'll sneak in testing of it sometime later.  I've been able to mount
the 3.3R cdrom that arrived today and access files off it.

Submitted by: dfr
1999-09-28 02:39:45 +00:00
ru
d8acaf9b94 Properly handle the case when either the aliasing or source address of
the link are equal to the default aliasing address.  Do not zero them!

This will fix the problem with non-working links added with the source
and/or aliasing address equal to the default aliasing address, but the
default aliasing address is set later, after the link has been set up,
like both natd(8) and ppp(8) do (for objective reasons).

Reviewed by:	Brian Somers <brian@FreeBSD.org>,
		Eivind Eklund <eivind@FreeBSD.org>,
		Charles Mott <cmott@srv.net>
1999-09-27 08:40:36 +00:00
roger
69c745b9cb Add auto-detection for Askey Dynalink Magic TView and
Leadtek Winfast 2000 cards.
No audio support yet, just the card make is reported.

Submitted by:	 Craig <crh@outpost.co.nz>
Submitted by:	 Peter Wemm <peter@netplex.com.au>
1999-09-27 08:04:55 +00:00
kato
cfa4d8f19b ed driver re-activated. 1999-09-27 03:39:15 +00:00
kato
a281695685 Removed pc98 code. 1999-09-27 03:37:36 +00:00
kato
492315a247 Make ed driver work again.
isa_compat.c
  Copied from sys/i386/isa/isa_compat.c.  It includes
  sys/pc98/pc98/isa_compat.h instead of sys/i386/isa/isa_compat.h.

isa_compat.h
  Copied from sys/i386/isa/isa_compat.c.  The ed driver is registered
  in this file until pc98's ed driver is converted into new-bus style.

files.pc98
  Use sys/pc98/pc98/isa_compat.c instead of sys/i386/isa/isa_compat.c.

if_ed.c
  - Fixed the location of the include file.
  - Disalbed pnp support.
1999-09-27 03:35:41 +00:00
nyan
aa607b12e7 Merge from sys/isa/fd.c revision 1.146, 1.153, 1.154 and 1.159. 1999-09-27 03:32:31 +00:00
kato
c9c75fd39f Move if_ed.c back to files.i386 since pc98 has a special ed driver.
Reviewed by:	peter
1999-09-27 03:11:36 +00:00
billf
eee615bf9a Spell 'timecounter' correctly. 1999-09-27 02:13:38 +00:00
imp
15b7254d61 Revert non-aha changes. They weren't supposed to go in. 1999-09-27 02:07:12 +00:00
peter
e8fae9c7ab Seperate pcaudio from isa/snd and isa/sound - it's not worth this breaking
each time there is a change.
1999-09-27 01:52:37 +00:00
grog
6d2191426d Correct typo in comment. putccdbuf() releases a buffer, it doesn't allocate one. 1999-09-27 01:51:42 +00:00
imp
c16afe3a9e Move aha driver to dev/aha like the other drivers.
Code relocation only, no code changes.
1999-09-27 01:51:18 +00:00