Age | Commit message (Collapse) | Author |
|
to get shared locks for lookup and get the exclusive lock only with
LK_DRAIN on unmount and do the real exclusive locking with flags in
mnt_flags, we now use shared locks for lookup and an exclusive lock for
unmount.
This is accomplished by slightly changing the semantics of vfs_busy.
Old vfs_busy behavior:
- with LK_NOWAIT set in flags, a shared lock was obtained if the
mountpoint wasn't being unmounted, otherwise we just returned an error.
- with no flags, a shared lock was obtained if the mountpoint was being
unmounted, otherwise we slept until the unmount was done and returned
an error.
LK_NOWAIT was used for sync(2) and some statistics code where it isn't really
critical that we get the correct results.
0 was used in fchdir and lookup where it's critical that we get the right
directory vnode for the filesystem root.
After this change vfs_busy keeps the same behavior for no flags and LK_NOWAIT.
But if some other flags are passed into it, they are passed directly
into lockmgr (actually LK_SLEEPFAIL is always added to those flags because
if we sleep for the lock, that means someone was holding the exclusive lock
and the exclusive lock is only held when the filesystem is being unmounted.
More changes:
dounmount must now be called with the exclusive lock held. (before this
the caller was supposed to hold the vfs_busy lock, but that wasn't always
true).
Zap some (now) unused mount flags.
And the highlight of this change:
Add some vfs_busy calls to match some vfs_unbusy calls, especially in
sys_mount. (lockmgr doesn't detect the case where we release a lock noone
holds (it will do that soon)).
If you've seen hangs on reboot with mfs this should solve it (I repeat this
for the fourth time now, but this time I spent two months fixing and
redesigning this and reading the code so this time I must have gotten
this right).
|
|
decriptor -> descriptor
authentciated -> authenticated
transmition -> transmission
|
|
Synch files that use that field.
(This argument is an internal interface specific to OpenBSD, so it won't
cause compatibility problems.)
(No bump, not an ABI change).
ok art, millert...
|
|
they are and declarre 'em accordingly also removing private externies of those
|
|
|
|
|
|
|
|
functions in sys/compat are left.
|
|
|
|
|
|
|
|
(Look ma, I might have broken the tree)
|
|
ultrix/ultrix_misc.c sunos/sunos_misc.c
does this automagically (and has done it for ages).
|
|
any anyone. Every caller of falloc matures the fd when it's usable.
- Since every lookup in the fd table must now check this flag and all of
them do the same thing, move all the necessary checks into a function -
fd_getfile.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
We might want to use them on types that are bigger than vaddr_t.
Fix all callers that pass pointers without casts.
|
|
|
|
|
|
was already so for native and sunos, the rest was just
wasting space on it. niels@ millert@ ok
|
|
|
|
that EFAULT return value is possible
|
|
|
|
|
|
|
|
|
|
|
|
one is a bit unclear)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Regenerated derived files from various syscalls.master files. Added $OpenBSD$.
|
|
|
|
posixmode tty attributes (was 112 and 113, should be 12 and 13).
|
|
|
|
|
|
Add '/emul/ultrix' pathname processing to Ultrix emulation, and move
Ultrix syscalls that require that processing out of ultrix_misc.c
to ultrix_pathname.c.
|
|
Rewrite (a copy of) the emul-sunos termio/termios emulation code to
emulate Ultrix termio/termios instead. Ultrix termio c_cc has separate
VMIM/VTIME attributes, and the Ultrix termios c_cc is a strict
superset of Ultrix termio c_cc. The termios-only c_cc indices are
all changed, relative to SunOS.
|
|
Add sigcode and esigcode to emul_ultrix, so that signal trampoline
code is set up for emul_ultrix processes.
|
|
|
|
Add emulation of Ultrix select: before calling native sys_select(),
limit the number of FDs to select on to the maximum supported by NetBSD --
which is as many FDs as the emul_ultrix process can have open, anyway.
Add emulation of Ultrix getmnt(2) in ultrix_fs.c
Add partial emulation of Ultrix tty ioctl()s in ultrix_ioctl.c, derived
from compat/sunos/sunos_ioctl.c. Ultrix libc's ``isatty()'' now works
in compat_emul processes.
Fix ultrix_sys_select() entry.
Add emulation of ultrix mount(2). Sufficient to NFS-mount filesystems
using a NetBSD kernel in an ultrix root filesystem.
Move wait emulation to the old (v7) wait syscall number, as that's
what the Ultrix ufs_mount binary uses.
|
|
|