Commit Graph

1676 Commits

Author SHA1 Message Date
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