Commit Graph

1733 Commits

Author SHA1 Message Date
pooka
1745060603 Explicitly zerofill some fields which are not within the boundaries
of p_start/endzero for whatever reasons.

Obviously, this fixes remote physio when running with MALLOC_OPTIONS J.
Otherwise PS_WEXIT is set in struct proc, proc_vmspace_getref() fails,
and copyout_proc() with it.

Reported by njoly
2011-02-10 13:40:35 +00:00
pooka
75b9ae3d27 zalloc struct vmspace to avoid having one full of garbage 2011-02-10 13:31:55 +00:00
pooka
651058f246 copy parent's p_comm when forking (if it exists) 2011-02-10 13:31:30 +00:00
pooka
922afc1884 support /dev/zero 2011-02-10 11:01:31 +00:00
pooka
cb10f2594b Make it possible to specify a minor number for an autogenerated device node. 2011-02-10 11:00:45 +00:00
pooka
d1c32169fe Use correct strtoululululu variant.
from Taylor R Campbell
2011-02-05 17:25:45 +00:00
pooka
8f6aa33e32 attach the compat_50_routedomain to make it actually work 2011-02-04 09:57:53 +00:00
pooka
ff4f0c61df fix KASSERT snafu. spotted by tests, as usual. 2011-02-03 22:16:11 +00:00
pooka
1e892b4a1f * open backend device once when the rumpblk is registered instead of
every time the virtual device is opened.  this takes care of e.g.
  a midlife chmod crisis
* when mapping initial windows, consistently look at host size and
  host offset.  otherwise we might end up in a situation with 0
  initial windows mapped, and that will cause a crash later.
2011-02-03 15:36:30 +00:00
pooka
4dfafdead2 weakalias the "withsize" variant of rump_pub_etfs_register too 2011-02-03 11:01:51 +00:00
pooka
2f1c12f11d * fix blkno->offset calculation for simulated non-512 devices
* allows transfers only in multiples of block size
* g/c unused struct member
2011-02-03 10:06:06 +00:00
pooka
1b5df295f3 Allow etfs for CREATE lookups too. This takes care of O_CREAT calls
to open(), which act just like lookups if the node exists (found
from etfs).  If the node doesn't exist in etfs, nothing changes
from the previous situation.
2011-02-02 15:58:09 +00:00
pooka
9cf08a1e73 never open rumpblk backend with O_TRUNC
XXX: the rumpuser_open interface needs a beating
2011-02-02 15:55:22 +00:00
pooka
d368e9df29 adjust inode size too if VOP_SETATTR changes size 2011-02-02 14:41:55 +00:00
pooka
047dbb35d9 regen for O_DIRECTORY 2011-02-01 21:21:34 +00:00
pooka
896d209af1 update todo from my private collection (which is now empty) 2011-02-01 15:26:46 +00:00
matt
4d5d6d9aa5 Add a new AF/PF_ROUTE which is 64-bit clean which makes the routing socket
interface (and its associated sysctls) act identically for both 32 and 64 bit
programs.  The old unclean one remains for backward compatibility.
2011-02-01 01:39:19 +00:00
matt
658d254929 Define COMPAT_50 to be 1 just like config(8) would be opt_compat_netbsd.h 2011-02-01 01:15:51 +00:00
christos
df0e963b6e enable this for amd64 too. 2011-01-31 00:10:06 +00:00
bouyer
21b1dbeb44 Move rumpuser_sp_fini() after the kernel has completed shuwdown
(and especially, after filesystems have been unmounted).
This way, rump.halt returns once the rump kernel is really out of the
game, which avoids races issues in test scripts using a rump kernel.
OK pooka@
2011-01-30 16:31:42 +00:00
pooka
dac4423feb Pass the value of getprogname() from the client to the server and
record it in p_comm.  This is nice for things like sockstat, since
they now display the client command name:

pain-rustique:43:~> rump.sockstat
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     xulrunner- 16     0 tcp    192.168.2.114.65507   204.152.190.12.80
root     xulrunner- 16     1 tcp    192.168.2.114.65501   204.152.190.12.80
root     xulrunner- 16     2 tcp    192.168.2.114.65500   204.152.190.12.80
root     xulrunner- 16     3 tcp    192.168.2.114.65499   204.152.190.12.80
root     xulrunner- 16     5 tcp    192.168.2.114.65498   204.152.190.12.80
root     xulrunner- 16     6 tcp    192.168.2.114.65497   204.152.190.12.80
root     socket     62     0 tcp6   *.http                *.*
root     socket     62     1 tcp    *.http                *.*
root     socket     63     0 tcp6   *.81                  *.*
root     socket     63     1 tcp    *.81                  *.*
2011-01-28 19:21:28 +00:00
pooka
464ac5f9d7 Don't NULL out l_cpu, l_stat is the new rumpkernel way too. 2011-01-28 18:48:21 +00:00
pooka
cedf6bdaf9 call procinit_sysctl to register the proc sysctl tree 2011-01-28 18:45:52 +00:00
pooka
0199e732f8 these days make sure we have an lwp lock (for lwp walker smiths) 2011-01-28 17:57:03 +00:00
pooka
840bf0206b If we are "unsleepable" due to a dying proc, yield() instead of
returning directly.  This allows other threads to run possible
setting a condition we are waiting on.

Fixes a busyloop condition which could be entered from vfs_unmountall()
where we were waiting for vrele_pending and the vrele thread could
not run since we were hogging the CPU.
2011-01-28 17:04:39 +00:00
pooka
96de0bb9fe Some lwp-walkers expect the correct value for l_stat, so use a flag
in l_flag instead of l_stat for the purpose of flagging lwps in a
dying proc.
2011-01-28 16:58:27 +00:00
pooka
99a6acb4bd fill in a default name for p_comm 2011-01-28 16:34:31 +00:00
pooka
e5a2e2b285 Fill in l_wmesg since some proc-walkers assume it. 2011-01-27 21:55:25 +00:00
pooka
44d370c291 Fix syscall name for compat syscalls. Arguably makesyscalls.sh
should generate the right info, but it's easier to fix here now.

This fixes compat syscalls for rump servers with dynamically loaded
components.  Since the compat syscall revamp a little time ago e.g.
stat() didn't work on my system (which is 5.0-based) with e.g.
rump_server -lrumpvfs.  Static servers and non-compat syscalls
worked just fine, though, making this a little harder to spot that
the usual bug.
2011-01-27 17:36:27 +00:00
pooka
5c349f05f1 inverse inversely incorrect comment 2011-01-22 18:33:25 +00:00
pooka
1d9f8678bd In case sys_reboot() was called by a remote client, put the response
in the socket before we shut down.  This way the response to the
syscall travels to the caller and they know things worked correctly
instead of having to just assume.
2011-01-22 13:41:22 +00:00
pooka
0feb91da5d Add a comment explaning why uvm_reclaim_hook is not currently
necessary for rump.

XXX: strictly speaking, the zfs implementation does not work
correctly since it just wakes up a thread instead of performing
the scan in the context of the pagedaemon
2011-01-22 13:13:46 +00:00
pooka
8df353fe72 no longer used 2011-01-21 13:11:32 +00:00
pooka
0ec2770c3c Since "physmem" is largely unused except for zfs wanting to know
if it has enough memory available, just pick a number which makes
zfs happy.

We *could* use a MIN() of available host mem and rump_memlimit,
though ...
2011-01-21 13:11:03 +00:00
pooka
a230f6e23f don't perform tasks already done by zfs_modcmd 2011-01-21 12:23:29 +00:00
haad
61583090b2 Add support for compiling ZFS and Solaris modules as RUMP libraries. Add
some locking and rumpcopy primitives and refactor module building Makefiles
to work with both RUMP and kernel modules. This is first part of adding
support for regular test of zfs on NetBSD to hunt some bugs and make it
stable.

Ok by pooka@.
2011-01-18 22:21:22 +00:00
pooka
887a2b78c7 regen: more compat syscalls 2011-01-17 18:25:17 +00:00
pooka
111bbbce9e Missed pselect50 in previous (file was open in editor ... d0h).
Add mknod50 and fhstat50 too.
2011-01-17 18:24:17 +00:00
pooka
0e4497a140 use newstyle rump syscall compat 2011-01-17 16:25:39 +00:00
pooka
4b0482d05f regen: rework rump syscall stubs (see makesyscalls.sh log for details) 2011-01-17 16:24:04 +00:00
pooka
46b3b0f6ce use compat code from sys/compat/common 2011-01-17 16:20:20 +00:00
pooka
cf864401d0 Support SIGMODEL_RAISE for non-local clients. 2011-01-14 13:11:08 +00:00
pooka
bb583c67a3 Release etfs node's backing vnode before freeing the etfs node.
spotted from the LOCKDEBUG run that martin accidentally did
2011-01-14 11:07:42 +00:00
pooka
a4d5652afb Introduce RUMP_LOCALPROC_P() macro and use it. 2011-01-13 15:38:29 +00:00
pooka
81d086b2f7 Respect DOWHITEOUT when removing a directory. 2011-01-13 10:26:47 +00:00
pooka
bf67d44461 support MNT_RDONLY 2011-01-13 07:27:35 +00:00
pooka
5f240a5279 unionfs voodoo 2011-01-12 21:08:55 +00:00
pooka
0312c5cee5 Explicitly set *vpp to NULL in lookup. At least reluckup gets
upset if we don't explicitly nullify vpp in the error case.
2011-01-12 19:31:39 +00:00
pooka
0f41405209 reject r/o mount attempts 2011-01-12 17:20:54 +00:00
pooka
8c4600a2ed Mark rootfs r/w. Thanks to the incredible machine known as vfs,
the only one who noticed the inconsistency of writing to a r/o fs
was unionfs.
2011-01-12 17:14:34 +00:00
pooka
6f53b4a35d make this happy to compile standalone 2011-01-12 16:12:30 +00:00
pooka
2bd6ac2300 add spop_procexit 2011-01-12 12:51:47 +00:00
pooka
b0bfbf33ac When the client and the rump kernel are the same host process, all
threads blocking in the kernel automatically exit when the process
exists.  However, for the sysproxy case this does not hold.
Typically it's ~harmless, but e.g. in the case of socket binding
following by poll it gets annoying.

Introduce sysproxy procexit, which wakes up all threads blocking
on a condition when a process's communication socket is closed.
The code is a little different from the regular kernel simply
because in a rump kernel l_mutex is not available at all times
(this is because scheduling happens on every kernel entry and exit,
and that path must be kept lockless for any reasonable performance).
Instead, use gating which makes sure all threads are either out of
the cv code or suspended in a well-known state.  Then, wake up the
threads and tell them to get the hell out of our galaxy.
2011-01-12 12:51:21 +00:00
kefren
6469d79cd6 add advlock to rumpfs, ok pooka@ 2011-01-11 14:05:32 +00:00
pooka
0de1b73a11 KASSERT we don't return back to userspace with the kernel lock held. 2011-01-11 10:49:20 +00:00
pooka
a05de63f6b Ensure that a) loopback attaches after all the domains have attached
b) loopback is configured only after it has attached.

makes tests/net/if_loop work again
2011-01-11 09:24:05 +00:00
pooka
68ede6388b Add one more component level to networking: IFCFG.
It is executed after IF and the purposes to guarantee the right
order in cross-component interface address configuration.
(e.g. lo0 is attached by net but 127.0.0.1 is configured by netinet)
2011-01-11 09:22:32 +00:00
christos
fb4e945aa5 regen 2011-01-10 04:42:24 +00:00
pooka
574a31f2de Shortcircuit remote 0-len copyin/out already in the kernel. 2011-01-09 14:12:37 +00:00
pooka
35e989d694 accept '\0' as a valid string 2011-01-09 13:49:57 +00:00
pooka
9a17e75e0e Autoconfigure 127.0.0.1 for lo0.
(testing bind/connect/etc. is now possible on a virgin rump kernel
without the need to ifconfig anything)
2011-01-09 12:22:34 +00:00
pooka
284c651488 Separate interface init and domain adding. 2011-01-09 12:20:53 +00:00
pooka
74e0a75b03 Allow multiple RUMP_COMPONENT() in one file. 2011-01-09 12:20:10 +00:00
pooka
712b80467f SIGPIPE is generated internally by the kernel, so include it in
the list of "no panic" sigs.
2011-01-08 14:01:04 +00:00
pooka
6d44fb2799 Do a minidehumanizenumber for RUMP_MEMLIMIT. Now you can set it
to e.g. 16m instead of having to type out 16777216.
2011-01-08 09:40:05 +00:00
pooka
3a382dc397 Avoid double init of tty_lock if rumpkern_tty is included. LOCKDEBUG
does not tolerate double inits.

pointed out by njoly
2011-01-07 15:10:22 +00:00
pooka
f9736ee54f Censor no-longer-relevant flags which may be passed down from
somewhere (e.g. an older kernel).  We really can't do anything
about new flags or flags changing meaning, though.
2011-01-07 11:27:53 +00:00
pooka
46b37b0509 regen: fix PARAMASK 2011-01-07 11:25:43 +00:00
pooka
97936d4ea0 antipasto 2011-01-06 13:36:48 +00:00
pooka
04056e47b5 give the outside world some idea of if we have LOCKDEBUG or not 2011-01-06 13:09:17 +00:00
pooka
cd73d116db Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.
requested by martin (sparc64 gdb cannot reliably produce a stack trace)
2011-01-06 11:22:54 +00:00
pooka
51426b1ada cwdi0 lock is now initialized in proc0_init() 2011-01-06 10:20:57 +00:00
pooka
4b258054be Add NetBSD 5 compat wrapping for *utimes() 2011-01-04 17:00:19 +00:00
pooka
a9dcf542ce Add SMP support for all architectures.
tested on sparc64 by martin
2011-01-04 16:23:35 +00:00
pooka
da5a203b0b Need to check for VNOVAL when setting attrs. 2011-01-04 09:49:16 +00:00
pooka
41cdab1b22 Don't try to change the size of non-reg nodes or when vattr doesn't
contain a new size.

from njoly
2011-01-04 00:09:43 +00:00
pooka
7766a79555 kqueue signal filters are not supported, so be explicit about it. 2011-01-03 14:57:06 +00:00
pooka
afa6c20325 regen: rump_lwproc_rfork 2011-01-02 12:53:13 +00:00
pooka
8b69e65f3e There is a use case where preserving the parent's fd table is
relevant, so to accommodate that change rump_lwproc_newproc() to
rump_lwproc_rfork().  The new interface has the rfork() fd table
semantics.  The equivalent of rump_lwproc_newproc() is
rump_lwproc_rfork(RUMP_RFCFDG).
2011-01-02 12:52:25 +00:00
dholland
a2770d1fb4 Final regen for tonight. 2011-01-02 05:12:56 +00:00
dholland
201ce42cd0 Regen yet again. 2011-01-02 05:09:50 +00:00
dholland
bf71879ee8 Regen again. 2011-01-02 05:05:42 +00:00
dholland
ef568a47eb Regen. 2011-01-02 05:02:04 +00:00
pooka
d015d3f957 Report correct file size + deal with ftruncate() and O_APPEND. 2011-01-01 19:47:22 +00:00
pooka
5cf9cd8f68 regen for comments 2010-12-30 20:11:07 +00:00
pooka
7b44389237 regen: SYCALL_NOSYS in rump_sysent[] 2010-12-30 16:51:28 +00:00
pooka
9b98cb6805 Requery syscall handlers during rump kernel init. This fixes
syscalls provided by a rump faction such as rumpvfs when the library
is not linked into the binary, but is dlopen()'d before calling
rump_init().
(it is illegal to dlopen() a faction after rump_init(), but syscalls
maybe be added the usual way with modules)

rump_server(1) -lstuff works now.
2010-12-30 16:46:32 +00:00
pooka
4513e431d6 Refetch netisr function pointers with dlsym(). This gives the
desired values in case the components containing the netisr handlers
were not linked in but dlopen()'d before calling rump_init().

(could simplify a little in case static linking is declared dead)
2010-12-30 16:19:39 +00:00
pooka
2aa9fbc0b2 Allow rump kernel to call dlsym(RTLD_DEFAULT). 2010-12-30 15:47:30 +00:00
pooka
6234f7657c regen: whitespace polish police 2010-12-30 13:38:56 +00:00
skrll
1892263359 Pull in sys/atomic.h so that hp700 can build - needed for membar_exit. 2010-12-18 14:01:43 +00:00
pooka
5e6a6543ba Don't loop eternally if uiomove() fails eternally (e.g. because
the connection to the client has been severed).
2010-12-18 11:45:09 +00:00
pooka
a290b96152 Use correct spec_islocked method. 2010-12-18 08:20:12 +00:00
rmind
11a35aed4d - Fix a few possible locking issues in execve1() and exit1(). Add a note
that scheduler locks are special in this regard - adaptive locks cannot
  be in the path due to turnstiles.  Randomly spotted/reported by uebayasi@.
- Remove unused lwp_relock() and replace lwp_lock_retry() by simplifying
  lwp_lock() and sleepq_enter() a little.
- Give alllwp its own cache-line and mark lwp_cache pointer as read-mostly.

OK ad@
2010-12-18 01:36:19 +00:00
joerg
dc09d3bc32 Support MKREPRO 2010-12-17 00:53:16 +00:00
pooka
3c4a27f7cd Print a banner a connecting client. The banner contains rump sp
protocol version, os name, os revision and machine.
2010-12-16 12:38:20 +00:00
pooka
92050ae959 stubs to make life easier 2010-12-13 14:03:59 +00:00
pooka
cee48cd5d1 Call rumpuser_sp_fini() from cpu_reboot() to make sure sys_reboot
with RB_HALT does not hang.
2010-12-12 17:11:33 +00:00
pooka
c59435eea2 add rumpuser_sp_fini, which surpringly is the opposite of rumpuser_sp_init 2010-12-12 17:10:36 +00:00
pooka
8a596af853 print a bit more diagnostics when halting 2010-12-12 13:18:07 +00:00