Module Name:    src
Committed By:   haad
Date:           Tue Jan 18 22:21:24 UTC 2011

Modified Files:
        src/distrib/sets/lists/base: shl.mi
        src/distrib/sets/lists/comp: mi shl.mi
        src/sys/modules/solaris: Makefile
        src/sys/modules/zfs: Makefile
        src/sys/rump/fs: Makefile.rumpfscomp
        src/sys/rump/kern: Makefile.rumpkerncomp
        src/sys/rump/librump/rumpkern: locks.c rumpcopy.c vm.c
Added Files:
        src/sys/modules/solaris: Makefile.solmod
        src/sys/modules/zfs: Makefile.zfsmod
        src/sys/rump/fs/lib/libzfs: Makefile component.c shlib_version
        src/sys/rump/kern/lib/libsolaris: Makefile component.c shlib_version

Log Message:
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@.


To generate a diff of this commit:
cvs rdiff -u -r1.568 -r1.569 src/distrib/sets/lists/base/shl.mi
cvs rdiff -u -r1.1570 -r1.1571 src/distrib/sets/lists/comp/mi
cvs rdiff -u -r1.150 -r1.151 src/distrib/sets/lists/comp/shl.mi
cvs rdiff -u -r1.4 -r1.5 src/sys/modules/solaris/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/modules/solaris/Makefile.solmod
cvs rdiff -u -r1.3 -r1.4 src/sys/modules/zfs/Makefile
cvs rdiff -u -r0 -r1.1 src/sys/modules/zfs/Makefile.zfsmod
cvs rdiff -u -r1.1 -r1.2 src/sys/rump/fs/Makefile.rumpfscomp
cvs rdiff -u -r0 -r1.1 src/sys/rump/fs/lib/libzfs/Makefile \
    src/sys/rump/fs/lib/libzfs/component.c \
    src/sys/rump/fs/lib/libzfs/shlib_version
cvs rdiff -u -r1.2 -r1.3 src/sys/rump/kern/Makefile.rumpkerncomp
cvs rdiff -u -r0 -r1.1 src/sys/rump/kern/lib/libsolaris/Makefile \
    src/sys/rump/kern/lib/libsolaris/component.c \
    src/sys/rump/kern/lib/libsolaris/shlib_version
cvs rdiff -u -r1.47 -r1.48 src/sys/rump/librump/rumpkern/locks.c
cvs rdiff -u -r1.16 -r1.17 src/sys/rump/librump/rumpkern/rumpcopy.c
cvs rdiff -u -r1.106 -r1.107 src/sys/rump/librump/rumpkern/vm.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/base/shl.mi
diff -u src/distrib/sets/lists/base/shl.mi:1.568 src/distrib/sets/lists/base/shl.mi:1.569
--- src/distrib/sets/lists/base/shl.mi:1.568	Tue Jan 18 20:09:38 2011
+++ src/distrib/sets/lists/base/shl.mi	Tue Jan 18 22:21:22 2011
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.568 2011/01/18 20:09:38 pooka Exp $
+# $NetBSD: shl.mi,v 1.569 2011/01/18 22:21:22 haad Exp $
 #
 # Note:	Don't delete entries from here - mark them as "obsolete" instead,
 #	unless otherwise stated below.
@@ -534,12 +534,18 @@
 ./usr/lib/librumpfs_union.so			base-rump-shlib
 ./usr/lib/librumpfs_union.so.0			base-rump-shlib
 ./usr/lib/librumpfs_union.so.0.0		base-rump-shlib
+./usr/lib/librumpfs_zfs.so			base-rump-shlib
+./usr/lib/librumpfs_zfs.so.0			base-rump-shlib
+./usr/lib/librumpfs_zfs.so.0.0			base-rump-shlib
 ./usr/lib/librumpkern_crypto.so			base-rump-shlib
 ./usr/lib/librumpkern_crypto.so.0		base-rump-shlib
 ./usr/lib/librumpkern_crypto.so.0.0		base-rump-shlib
 ./usr/lib/librumpkern_ksem.so			base-rump-shlib
 ./usr/lib/librumpkern_ksem.so.0			base-rump-shlib
 ./usr/lib/librumpkern_ksem.so.0.0		base-rump-shlib
+./usr/lib/librumpkern_solaris.so		base-rump-shlib
+./usr/lib/librumpkern_solaris.so.0		base-rump-shlib
+./usr/lib/librumpkern_solaris.so.0.0		base-rump-shlib
 ./usr/lib/librumpkern_tty.so			base-rump-shlib
 ./usr/lib/librumpkern_tty.so.0			base-rump-shlib
 ./usr/lib/librumpkern_tty.so.0.0		base-rump-shlib

Index: src/distrib/sets/lists/comp/mi
diff -u src/distrib/sets/lists/comp/mi:1.1570 src/distrib/sets/lists/comp/mi:1.1571
--- src/distrib/sets/lists/comp/mi:1.1570	Tue Jan 18 21:07:51 2011
+++ src/distrib/sets/lists/comp/mi	Tue Jan 18 22:21:22 2011
@@ -1,4 +1,4 @@
-#	$NetBSD: mi,v 1.1570 2011/01/18 21:07:51 pooka Exp $
+#	$NetBSD: mi,v 1.1571 2011/01/18 22:21:22 haad Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -2784,12 +2784,16 @@
 ./usr/lib/librumpfs_union.a			comp-c-lib
 ./usr/lib/librumpfs_union_g.a			-unknown-		debuglib
 ./usr/lib/librumpfs_union_p.a			comp-c-proflib		profile
+./usr/lib/librumpfs_zfs.a			comp-c-lib
+./usr/lib/librumpfs_zfs_p.a			comp-c-piclib		profile
 ./usr/lib/librumpkern_crypto.a			comp-c-lib
 ./usr/lib/librumpkern_crypto_g.a			-unknown-		debuglib
 ./usr/lib/librumpkern_crypto_p.a			comp-c-proflib		profile
 ./usr/lib/librumpkern_ksem.a			comp-c-lib
 ./usr/lib/librumpkern_ksem_g.a			-unknown-		debuglib
 ./usr/lib/librumpkern_ksem_p.a			comp-c-proflib		profile
+./usr/lib/librumpkern_solaris.a			comp-c-lib
+./usr/lib/librumpkern_solaris_p.a		comp-c-proflib		profile
 ./usr/lib/librumpkern_tty.a			comp-c-lib
 ./usr/lib/librumpkern_tty_g.a			-unknown-		debuglib
 ./usr/lib/librumpkern_tty_p.a			comp-c-proflib		profile

Index: src/distrib/sets/lists/comp/shl.mi
diff -u src/distrib/sets/lists/comp/shl.mi:1.150 src/distrib/sets/lists/comp/shl.mi:1.151
--- src/distrib/sets/lists/comp/shl.mi:1.150	Tue Jan 18 21:07:52 2011
+++ src/distrib/sets/lists/comp/shl.mi	Tue Jan 18 22:21:22 2011
@@ -1,4 +1,4 @@
-# $NetBSD: shl.mi,v 1.150 2011/01/18 21:07:52 pooka Exp $
+# $NetBSD: shl.mi,v 1.151 2011/01/18 22:21:22 haad Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -147,8 +147,10 @@
 ./usr/lib/librumpfs_umap_pic.a			comp-c-piclib
 ./usr/lib/librumpfs_umapfs_pic.a		comp-obsolete		obsolete
 ./usr/lib/librumpfs_union_pic.a			comp-c-piclib
+./usr/lib/librumpfs_zfs_pic.a			comp-c-piclib
 ./usr/lib/librumpkern_crypto_pic.a			comp-c-piclib
 ./usr/lib/librumpkern_ksem_pic.a		comp-c-piclib
+./usr/lib/librumpkern_solaris_pic.a		comp-c-piclib
 ./usr/lib/librumpkern_tty_pic.a			comp-c-piclib
 ./usr/lib/librumpkern_z_pic.a			comp-c-piclib
 ./usr/lib/librumpnet_agr_pic.a		comp-c-piclib
@@ -336,8 +338,10 @@
 ./usr/libdata/debug/usr/lib/librumpfs_udf.so.0.0.debug	comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpfs_umap.so.0.0.debug	comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpfs_union.so.0.0.debug	comp-rump-debug	debug
+./usr/libdata/debug/usr/lib/librumpfs_zfs.so.0.0.debug		comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpkern_crypto.so.0.0.debug	comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpkern_ksem.so.0.0.debug	comp-rump-debug	debug
+./usr/libdata/debug/usr/lib/librumpkern_solaris.so.0.0.debug	comp-rump-debuf	debug
 ./usr/libdata/debug/usr/lib/librumpkern_tty.so.0.0.debug	comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpkern_z.so.0.0.debug	comp-rump-debug	debug
 ./usr/libdata/debug/usr/lib/librumpnet.so.0.0.debug	comp-rump-debug	debug

Index: src/sys/modules/solaris/Makefile
diff -u src/sys/modules/solaris/Makefile:1.4 src/sys/modules/solaris/Makefile:1.5
--- src/sys/modules/solaris/Makefile:1.4	Fri Mar 12 21:37:37 2010
+++ src/sys/modules/solaris/Makefile	Tue Jan 18 22:21:22 2011
@@ -1,95 +1,8 @@
-#	$NetBSD: Makefile,v 1.4 2010/03/12 21:37:37 darran Exp $
+#	$NetBSD: Makefile,v 1.5 2011/01/18 22:21:22 haad Exp $
 
 .include "../Makefile.inc"
 
-CFLAGS+= -g -fno-inline
-
 KMOD=	solaris
 
-ZFSDIR=	${S}/../external/cddl/osnet
-
-.PATH:	${ZFSDIR}/dist/common/avl
-
-SRCS=	avl.c
-
-.PATH:	${ZFSDIR}/dist/common/nvpair
-
-SRCS+=	nvpair.c
-SRCS+=	nvpair_alloc_fixed.c
-
-.PATH:	${ZFSDIR}/dist/common/unicode
-
-SRCS+=	u8_textprep.c
-
-.PATH:	${ZFSDIR}/dist/uts/common/os
-
-SRCS+=	fm.c
-SRCS+=	list.c
-SRCS+=	nvpair_alloc_system.c
-
-.PATH:	${ZFSDIR}/dist/uts/common/rpc
-
-SRCS+=	xdr.c
-SRCS+=	xdr_array.c
-SRCS+=	xdr_mem.c
-
-.PATH:	${ZFSDIR}/dist/uts/common/zmod
-
-SRCS+=	adler32.c
-SRCS+=	crc32.c
-SRCS+=	deflate.c
-SRCS+=	inffast.c
-SRCS+=	inflate.c
-SRCS+=	inftrees.c
-SRCS+=	trees.c
-SRCS+=	zmod.c
-SRCS+=	zmod_subr.c
-SRCS+=	zutil.c
-
-.PATH:  ${ZFSDIR}/dist/common/acl
-
-SRCS+= acl_common.c
-
-.PATH:	${ZFSDIR}/sys/kern
-
-SRCS+=	kobj.c
-SRCS+=	kstat.c
-SRCS+=	misc.c
-SRCS+=	policy.c
-SRCS+=	string.c
-SRCS+=	zone.c
-SRCS+=	callb.c
-SRCS+=	ddi.c
-SRCS+=	mod.c
-SRCS+=	printf.c
-SRCS+=	taskq.c
-SRCS+=	vfs.c
-SRCS+=	opensolaris.c
-
-WARNS=		0
-NOGCCERROR=	yes
-
-CWARNFLAGS+=	-Wall
-CWARNFLAGS+=	-Wno-unknown-pragmas
-CWARNFLAGS+=	-Wno-missing-braces
-CWARNFLAGS+=	-Wno-parentheses
-CWARNFLAGS+=	-Wno-uninitialized
-CWARNFLAGS+=	-Wno-unused
-CWARNFLAGS+=	-Wno-switch
-CWARNFLAGS+=	-Wno-strict-prototypes
-CWARNFLAGS+=	-Wno-missing-prototypes
-CWARNFLAGS+=	-Wno-format
-
-CPPFLAGS+=	-I${ZFSDIR}/sys
-CPPFLAGS+=	-I${ZFSDIR}/dist/common/acl
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zmod
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
-CPPFLAGS+=      -I${ZFSDIR}/sys/sys
-
-CPPFLAGS+=	-Dcaddr_t=__caddr_t "-D__va_list=va_list"
-CPPFLAGS+=	-std=c99
-# CPPFLAGS+=	-D_NFS_NFS_H_
-# CPPFLAGS+=	-D_PROPLIB_ZFS_CONFLICT
-
-CFLAGS+=	-g -O0 -DDIAGNOSTIC
+.include "Makefile.solmod"
 .include <bsd.kmodule.mk>

Index: src/sys/modules/zfs/Makefile
diff -u src/sys/modules/zfs/Makefile:1.3 src/sys/modules/zfs/Makefile:1.4
--- src/sys/modules/zfs/Makefile:1.3	Sun Feb 28 15:22:16 2010
+++ src/sys/modules/zfs/Makefile	Tue Jan 18 22:21:22 2011
@@ -1,136 +1,8 @@
-#	$NetBSD: Makefile,v 1.3 2010/02/28 15:22:16 haad Exp $
+#	$NetBSD: Makefile,v 1.4 2011/01/18 22:21:22 haad Exp $
 
 .include "../Makefile.inc"
 
 KMOD=	zfs
 
-ZFSDIR=	${S}/../external/cddl/osnet
-
-.PATH:	${ZFSDIR}/dist/common/zfs
-
-SRCS+=	zfs_comutil.c
-SRCS+=	zfs_deleg.c
-SRCS+=	zfs_fletcher.c
-SRCS+=	zfs_namecheck.c
-SRCS+=	zfs_prop.c
-SRCS+=	zpool_prop.c
-SRCS+=	zprop_common.c
-
-.PATH:	${ZFSDIR}/dist/uts/common/fs
-
-#SRCS+=	gfs.c
-
-.PATH: ${ZFSDIR}/dist/uts/common/zmod
-
-SRCS+= trees.c
-
-.PATH:	${ZFSDIR}/dist/uts/common/fs/zfs
-
-SRCS+=	arc.c
-SRCS+=	bplist.c
-SRCS+=	dbuf.c
-SRCS+=	ddt.c
-SRCS+=	ddt_zap.c
-SRCS+=	dmu.c
-SRCS+=	dmu_object.c
-SRCS+=	dmu_objset.c
-SRCS+=	dmu_send.c
-SRCS+=	dmu_traverse.c
-SRCS+=	dmu_tx.c
-SRCS+=	dmu_zfetch.c
-SRCS+=	dnode.c
-SRCS+=	dnode_sync.c
-SRCS+=	dsl_dataset.c
-SRCS+=	dsl_deleg.c
-SRCS+=	dsl_dir.c
-SRCS+=	dsl_pool.c
-SRCS+=	dsl_prop.c
-SRCS+=	dsl_scrub.c
-SRCS+=	dsl_synctask.c
-SRCS+=	gzip.c
-SRCS+=	lzjb.c
-SRCS+=	metaslab.c
-SRCS+=	refcount.c
-SRCS+=	rrwlock.c
-SRCS+=	sha256.c
-SRCS+=	spa.c
-SRCS+=	spa_config.c
-SRCS+=	spa_errlog.c
-SRCS+=	spa_history.c
-SRCS+=	spa_misc.c
-SRCS+=	space_map.c
-SRCS+=	txg.c
-SRCS+=	uberblock.c
-SRCS+=	unique.c
-SRCS+=	vdev.c
-SRCS+=	vdev_cache.c
-SRCS+=	vdev_disk.c
-SRCS+=	vdev_file.c
-SRCS+=	vdev_label.c
-SRCS+=	vdev_mirror.c
-SRCS+=	vdev_missing.c
-SRCS+=	vdev_queue.c
-SRCS+=	vdev_raidz.c
-SRCS+=	vdev_root.c
-SRCS+=	zap.c
-SRCS+=	zap_leaf.c
-SRCS+=	zap_micro.c
-SRCS+=	zfs_byteswap.c
-#SRCS+=	zfs_ctldir.c
-SRCS+=	zfs_dir.c
-SRCS+=	zfs_fuid.c
-SRCS+=	zfs_fm.c
-SRCS+=	zfs_ioctl.c
-SRCS+=	zfs_log.c
-SRCS+=	zfs_replay.c
-SRCS+=	zfs_rlock.c
-SRCS+=	zfs_vfsops.c
-SRCS+=	zfs_vnops.c
-SRCS+=	zfs_znode.c
-SRCS+= 	zfs_acl.c
-SRCS+=	zil.c
-SRCS+=	zio.c
-SRCS+=	zio_checksum.c
-SRCS+=	zio_compress.c
-SRCS+=	zio_inject.c
-SRCS+=	zutil.c
-SRCS+=	zvol.c
-SRCS+=	zle.c
-
-.PATH: ${ZFSDIR}/sys/kern
-
-SRCS+= zfs_stub.c
-
-WARNS=		0
-NOGCCERROR=	yes
-
-CWARNFLAGS+=	-Wall
-CWARNFLAGS+=	-Wno-unknown-pragmas
-CWARNFLAGS+=	-Wno-missing-braces
-CWARNFLAGS+=	-Wno-parentheses
-CWARNFLAGS+=	-Wno-uninitialized
-CWARNFLAGS+=	-Wno-unused
-CWARNFLAGS+=	-Wno-switch
-CWARNFLAGS+=	-Wno-strict-prototypes
-CWARNFLAGS+=	-Wno-missing-prototypes
-CWARNFLAGS+=	-Wno-format
-
-CPPFLAGS+=	-I${ZFSDIR}/sys
-CPPFLAGS+=      -I${ZFSDIR}/dist/common
-CPPFLAGS+=	-I${ZFSDIR}/dist/common/acl
-CPPFLAGS+=	-I${ZFSDIR}/dist/common/zfs
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/fs/zfs
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zmod
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zfs
-CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
-
-CPPFLAGS+=	-Dcaddr_t=__caddr_t "-D__va_list=va_list" -D__NetBSD__
-CPPFLAGS+=	-std=c99
-CPPFLAGS+=	-D_NFS_NFS_H_
-CPPFLAGS+=	-D_PROPLIB_ZFS_CONFLICT 
-
-CFLAGS+=	-DDIAGNOSTIC -g -O0
-# -DZFS_DEBUG
-
+.include "Makefile.zfsmod"
 .include <bsd.kmodule.mk>

Index: src/sys/rump/fs/Makefile.rumpfscomp
diff -u src/sys/rump/fs/Makefile.rumpfscomp:1.1 src/sys/rump/fs/Makefile.rumpfscomp:1.2
--- src/sys/rump/fs/Makefile.rumpfscomp:1.1	Sun Dec  5 16:53:46 2010
+++ src/sys/rump/fs/Makefile.rumpfscomp	Tue Jan 18 22:21:23 2011
@@ -1,10 +1,15 @@
-#	$NetBSD: Makefile.rumpfscomp,v 1.1 2010/12/05 16:53:46 pooka Exp $
+#	$NetBSD: Makefile.rumpfscomp,v 1.2 2011/01/18 22:21:23 haad Exp $
 #
 
 RUMPFSCOMP=	cd9660 efs ext2fs fdesc ffs hfs kernfs lfs mfs msdos	\
 		nfs nilfs ntfs null ptyfs smbfs syspuffs sysvbfs	\
 		tmpfs udf umap union
 
+.if ${MACHINE_ARCH} == "i386" || \
+    ${MACHINE_ARCH} == "x86_64"
+RUMPFSCOMP+=	zfs
+.endif
+
 RUMPFSCOMP+=	nfsserver
 
 RUMPVFSCOMP+=	fifo layer

Index: src/sys/rump/kern/Makefile.rumpkerncomp
diff -u src/sys/rump/kern/Makefile.rumpkerncomp:1.2 src/sys/rump/kern/Makefile.rumpkerncomp:1.3
--- src/sys/rump/kern/Makefile.rumpkerncomp:1.2	Sun Dec  5 20:11:22 2010
+++ src/sys/rump/kern/Makefile.rumpkerncomp	Tue Jan 18 22:21:23 2011
@@ -1,8 +1,13 @@
-#	$NetBSD: Makefile.rumpkerncomp,v 1.2 2010/12/05 20:11:22 pooka Exp $
+#	$NetBSD: Makefile.rumpkerncomp,v 1.3 2011/01/18 22:21:23 haad Exp $
 #
 
 RUMPKERNCOMPS=	crypto ksem tty z
 
+.if ${MACHINE_ARCH} == "i386" || \
+    ${MACHINE_ARCH} == "x86_64"
+RUMPKERNCOMPS+=    solaris
+.endif
+
 .for var in ${RUMPKERNCOMPS}
 RUMPKERNLIBS+=lib${var}
 RUMPKERNLDADD+=-lrumpkern_${var}

Index: src/sys/rump/librump/rumpkern/locks.c
diff -u src/sys/rump/librump/rumpkern/locks.c:1.47 src/sys/rump/librump/rumpkern/locks.c:1.48
--- src/sys/rump/librump/rumpkern/locks.c:1.47	Wed Jan 12 12:51:21 2011
+++ src/sys/rump/librump/rumpkern/locks.c	Tue Jan 18 22:21:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: locks.c,v 1.47 2011/01/12 12:51:21 pooka Exp $	*/
+/*	$NetBSD: locks.c,v 1.48 2011/01/18 22:21:23 haad Exp $	*/
 
 /*
  * Copyright (c) 2007, 2008 Antti Kantee.  All Rights Reserved.
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.47 2011/01/12 12:51:21 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: locks.c,v 1.48 2011/01/18 22:21:23 haad Exp $");
 
 #include <sys/param.h>
 #include <sys/kmem.h>
@@ -221,6 +221,21 @@
 	return 0;
 }
 
+void
+rw_downgrade(krwlock_t *rw)
+{
+
+#ifdef LOCKDEBUG
+	KASSERT(!rw_write_held(rw));
+#endif
+	/*
+	 * XXX HACK: How we can downgrade re lock in rump properly.
+	 */
+	rw_exit(rw);
+	rw_enter(rw, RW_READER);
+	return;
+}
+
 int
 rw_write_held(krwlock_t *rw)
 {

Index: src/sys/rump/librump/rumpkern/rumpcopy.c
diff -u src/sys/rump/librump/rumpkern/rumpcopy.c:1.16 src/sys/rump/librump/rumpkern/rumpcopy.c:1.17
--- src/sys/rump/librump/rumpkern/rumpcopy.c:1.16	Thu Jan 13 15:38:29 2011
+++ src/sys/rump/librump/rumpkern/rumpcopy.c	Tue Jan 18 22:21:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: rumpcopy.c,v 1.16 2011/01/13 15:38:29 pooka Exp $	*/
+/*	$NetBSD: rumpcopy.c,v 1.17 2011/01/18 22:21:23 haad Exp $	*/
 
 /*
  * Copyright (c) 2009 Antti Kantee.  All Rights Reserved.
@@ -26,7 +26,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rumpcopy.c,v 1.16 2011/01/13 15:38:29 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rumpcopy.c,v 1.17 2011/01/18 22:21:23 haad Exp $");
 
 #include <sys/param.h>
 #include <sys/lwp.h>
@@ -206,3 +206,19 @@
 
 	return error;
 }
+
+/*
+ * Copy one byte from userspace to kernel.
+ */
+int
+fubyte(const void *base)
+{
+	unsigned char val;
+	int error;
+
+	error = copyin(base, &val, sizeof(char));
+	if (error != 0)
+		return -1;
+
+	return (int)val;
+}

Index: src/sys/rump/librump/rumpkern/vm.c
diff -u src/sys/rump/librump/rumpkern/vm.c:1.106 src/sys/rump/librump/rumpkern/vm.c:1.107
--- src/sys/rump/librump/rumpkern/vm.c:1.106	Thu Jan 13 15:38:29 2011
+++ src/sys/rump/librump/rumpkern/vm.c	Tue Jan 18 22:21:23 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: vm.c,v 1.106 2011/01/13 15:38:29 pooka Exp $	*/
+/*	$NetBSD: vm.c,v 1.107 2011/01/18 22:21:23 haad Exp $	*/
 
 /*
  * Copyright (c) 2007-2010 Antti Kantee.  All Rights Reserved.
@@ -41,7 +41,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.106 2011/01/13 15:38:29 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vm.c,v 1.107 2011/01/18 22:21:23 haad Exp $");
 
 #include <sys/param.h>
 #include <sys/atomic.h>
@@ -342,6 +342,20 @@
 	/* nada */
 }
 
+void
+uvm_reclaim_hook_add(struct uvm_reclaim_hook *hook_entry)
+{
+
+	/* nada */
+}
+
+void
+uvm_reclaim_hook_del(struct uvm_reclaim_hook *hook_entry)
+{
+
+	/* nada */
+}
+
 /* where's your schmonz now? */
 #define PUNLIMIT(a)	\
 p->p_rlimit[a].rlim_cur = p->p_rlimit[a].rlim_max = RLIM_INFINITY;

Added files:

Index: src/sys/modules/solaris/Makefile.solmod
diff -u /dev/null src/sys/modules/solaris/Makefile.solmod:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/modules/solaris/Makefile.solmod	Tue Jan 18 22:21:22 2011
@@ -0,0 +1,90 @@
+#	$NetBSD: Makefile.solmod,v 1.1 2011/01/18 22:21:22 haad Exp $
+
+CFLAGS+= -g -fno-inline
+
+ZFSDIR=	${S}/../external/cddl/osnet
+
+.PATH:	${ZFSDIR}/dist/common/avl
+
+SRCS=	avl.c
+
+.PATH:	${ZFSDIR}/dist/common/nvpair
+
+SRCS+=	nvpair.c
+SRCS+=	nvpair_alloc_fixed.c
+
+.PATH:	${ZFSDIR}/dist/common/unicode
+
+SRCS+=	u8_textprep.c
+
+.PATH:	${ZFSDIR}/dist/uts/common/os
+
+SRCS+=	fm.c
+SRCS+=	list.c
+SRCS+=	nvpair_alloc_system.c
+
+.PATH:	${ZFSDIR}/dist/uts/common/rpc
+
+SRCS+=	xdr.c
+SRCS+=	xdr_array.c
+SRCS+=	xdr_mem.c
+
+.PATH:	${ZFSDIR}/dist/uts/common/zmod
+
+SRCS+=	adler32.c
+SRCS+=	crc32.c
+SRCS+=	deflate.c
+SRCS+=	inffast.c
+SRCS+=	inflate.c
+SRCS+=	inftrees.c
+SRCS+=	trees.c
+SRCS+=	zmod.c
+SRCS+=	zmod_subr.c
+SRCS+=	zutil.c
+
+.PATH:  ${ZFSDIR}/dist/common/acl
+
+SRCS+= acl_common.c
+
+.PATH:	${ZFSDIR}/sys/kern
+
+SRCS+=	kobj.c
+SRCS+=	kstat.c
+SRCS+=	misc.c
+SRCS+=	policy.c
+SRCS+=	string.c
+SRCS+=	zone.c
+SRCS+=	callb.c
+SRCS+=	ddi.c
+SRCS+=	mod.c
+SRCS+=	printf.c
+SRCS+=	taskq.c
+SRCS+=	vfs.c
+SRCS+=	opensolaris.c
+
+WARNS=		0
+NOGCCERROR=	yes
+
+CWARNFLAGS+=	-Wall
+CWARNFLAGS+=	-Wno-unknown-pragmas
+CWARNFLAGS+=	-Wno-missing-braces
+CWARNFLAGS+=	-Wno-parentheses
+CWARNFLAGS+=	-Wno-uninitialized
+CWARNFLAGS+=	-Wno-unused
+CWARNFLAGS+=	-Wno-switch
+CWARNFLAGS+=	-Wno-strict-prototypes
+CWARNFLAGS+=	-Wno-missing-prototypes
+CWARNFLAGS+=	-Wno-format
+
+CPPFLAGS+=	-I${ZFSDIR}/sys
+CPPFLAGS+=	-I${ZFSDIR}/dist/common/acl
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zmod
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
+CPPFLAGS+=      -I${ZFSDIR}/sys/sys
+
+CPPFLAGS+=	-Dcaddr_t=__caddr_t "-D__va_list=va_list"
+CPPFLAGS+=	-std=c99
+# CPPFLAGS+=	-D_NFS_NFS_H_
+# CPPFLAGS+=	-D_PROPLIB_ZFS_CONFLICT
+
+CFLAGS+=	-g -O0 -DDIAGNOSTIC
\ No newline at end of file

Index: src/sys/modules/zfs/Makefile.zfsmod
diff -u /dev/null src/sys/modules/zfs/Makefile.zfsmod:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/modules/zfs/Makefile.zfsmod	Tue Jan 18 22:21:22 2011
@@ -0,0 +1,130 @@
+#	$NetBSD: Makefile.zfsmod,v 1.1 2011/01/18 22:21:22 haad Exp $
+
+ZFSDIR=	${S}/../external/cddl/osnet
+
+.PATH:	${ZFSDIR}/dist/common/zfs
+
+SRCS+=	zfs_comutil.c
+SRCS+=	zfs_deleg.c
+SRCS+=	zfs_fletcher.c
+SRCS+=	zfs_namecheck.c
+SRCS+=	zfs_prop.c
+SRCS+=	zpool_prop.c
+SRCS+=	zprop_common.c
+
+.PATH:	${ZFSDIR}/dist/uts/common/fs
+
+#SRCS+=	gfs.c
+
+.PATH: ${ZFSDIR}/dist/uts/common/zmod
+
+SRCS+= trees.c
+
+.PATH:	${ZFSDIR}/dist/uts/common/fs/zfs
+
+SRCS+=	arc.c
+SRCS+=	bplist.c
+SRCS+=	dbuf.c
+SRCS+=	ddt.c
+SRCS+=	ddt_zap.c
+SRCS+=	dmu.c
+SRCS+=	dmu_object.c
+SRCS+=	dmu_objset.c
+SRCS+=	dmu_send.c
+SRCS+=	dmu_traverse.c
+SRCS+=	dmu_tx.c
+SRCS+=	dmu_zfetch.c
+SRCS+=	dnode.c
+SRCS+=	dnode_sync.c
+SRCS+=	dsl_dataset.c
+SRCS+=	dsl_deleg.c
+SRCS+=	dsl_dir.c
+SRCS+=	dsl_pool.c
+SRCS+=	dsl_prop.c
+SRCS+=	dsl_scrub.c
+SRCS+=	dsl_synctask.c
+SRCS+=	gzip.c
+SRCS+=	lzjb.c
+SRCS+=	metaslab.c
+SRCS+=	refcount.c
+SRCS+=	rrwlock.c
+SRCS+=	sha256.c
+SRCS+=	spa.c
+SRCS+=	spa_config.c
+SRCS+=	spa_errlog.c
+SRCS+=	spa_history.c
+SRCS+=	spa_misc.c
+SRCS+=	space_map.c
+SRCS+=	txg.c
+SRCS+=	uberblock.c
+SRCS+=	unique.c
+SRCS+=	vdev.c
+SRCS+=	vdev_cache.c
+SRCS+=	vdev_disk.c
+SRCS+=	vdev_file.c
+SRCS+=	vdev_label.c
+SRCS+=	vdev_mirror.c
+SRCS+=	vdev_missing.c
+SRCS+=	vdev_queue.c
+SRCS+=	vdev_raidz.c
+SRCS+=	vdev_root.c
+SRCS+=	zap.c
+SRCS+=	zap_leaf.c
+SRCS+=	zap_micro.c
+SRCS+=	zfs_byteswap.c
+#SRCS+=	zfs_ctldir.c
+SRCS+=	zfs_dir.c
+SRCS+=	zfs_fuid.c
+SRCS+=	zfs_fm.c
+SRCS+=	zfs_ioctl.c
+SRCS+=	zfs_log.c
+SRCS+=	zfs_replay.c
+SRCS+=	zfs_rlock.c
+SRCS+=	zfs_vfsops.c
+SRCS+=	zfs_vnops.c
+SRCS+=	zfs_znode.c
+SRCS+= 	zfs_acl.c
+SRCS+=	zil.c
+SRCS+=	zio.c
+SRCS+=	zio_checksum.c
+SRCS+=	zio_compress.c
+SRCS+=	zio_inject.c
+SRCS+=	zutil.c
+SRCS+=	zvol.c
+SRCS+=	zle.c
+
+.PATH: ${ZFSDIR}/sys/kern
+
+SRCS+= zfs_stub.c
+
+WARNS=		0
+NOGCCERROR=	yes
+
+CWARNFLAGS+=	-Wall
+CWARNFLAGS+=	-Wno-unknown-pragmas
+CWARNFLAGS+=	-Wno-missing-braces
+CWARNFLAGS+=	-Wno-parentheses
+CWARNFLAGS+=	-Wno-uninitialized
+CWARNFLAGS+=	-Wno-unused
+CWARNFLAGS+=	-Wno-switch
+CWARNFLAGS+=	-Wno-strict-prototypes
+CWARNFLAGS+=	-Wno-missing-prototypes
+CWARNFLAGS+=	-Wno-format
+
+CPPFLAGS+=	-I${ZFSDIR}/sys
+CPPFLAGS+=      -I${ZFSDIR}/dist/common
+CPPFLAGS+=	-I${ZFSDIR}/dist/common/acl
+CPPFLAGS+=	-I${ZFSDIR}/dist/common/zfs
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/fs/zfs
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zmod
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common/zfs
+CPPFLAGS+=	-I${ZFSDIR}/dist/uts/common
+
+CPPFLAGS+=	-Dcaddr_t=__caddr_t "-D__va_list=va_list" -D__NetBSD__
+CPPFLAGS+=	-std=c99
+CPPFLAGS+=	-D_NFS_NFS_H_
+CPPFLAGS+=	-D_PROPLIB_ZFS_CONFLICT
+
+CFLAGS+=	-DDIAGNOSTIC -g -O0
+# -DZFS_DEBUG

Index: src/sys/rump/fs/lib/libzfs/Makefile
diff -u /dev/null src/sys/rump/fs/lib/libzfs/Makefile:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/fs/lib/libzfs/Makefile	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,17 @@
+#	$NetBSD: Makefile,v 1.1 2011/01/18 22:21:23 haad Exp $
+#
+
+S!=             cd ${.PARSEDIR}/../../../../;pwd
+
+.include "${.CURDIR}/../../../../modules/zfs/Makefile.zfsmod"
+
+LIB=	rumpfs_zfs
+
+# RUMP stuff
+CPPFLAGS+=      -I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpvfs\
+		-I${RUMPTOP}/librump/rumpdev
+SRCS+= component.c
+
+
+.include <bsd.lib.mk>
+.include <bsd.klinks.mk>
Index: src/sys/rump/fs/lib/libzfs/component.c
diff -u /dev/null src/sys/rump/fs/lib/libzfs/component.c:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/fs/lib/libzfs/component.c	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,110 @@
+/*	$NetBSD: component.c,v 1.1 2011/01/18 22:21:23 haad Exp $ */
+
+/*
+ * Copyright (c) 2010 Antti Kantee.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2011/01/18 22:21:23 haad Exp $");
+
+#include <sys/param.h>
+#include <sys/conf.h>
+#include <sys/stat.h>
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/errno.h>
+#include <sys/uio.h>
+#include <sys/buf.h>
+#include <sys/modctl.h>
+#include <sys/open.h>
+#include <sys/file.h>
+#include <sys/kmem.h>
+#include <sys/conf.h>
+#include <sys/cmn_err.h>
+#include <sys/stat.h>
+#include <sys/zfs_ioctl.h>
+#include <sys/zfs_vfsops.h>
+#include <sys/zfs_znode.h>
+#include <sys/zap.h>
+#include <sys/spa.h>
+#include <sys/spa_impl.h>
+#include <sys/vdev.h>
+#include <sys/priv_impl.h>
+#include <sys/dmu.h>
+#include <sys/dsl_dir.h>
+#include <sys/dsl_dataset.h>
+#include <sys/dsl_prop.h>
+#include <sys/dsl_deleg.h>
+#include <sys/dmu_objset.h>
+#include <sys/ddi.h>
+#include <sys/sunddi.h>
+#include <sys/sunldi.h>
+#include <sys/policy.h>
+#include <sys/zone.h>
+#include <sys/nvpair.h>
+#include <sys/pathname.h>
+#include <sys/mount.h>
+#include <sys/sdt.h>
+#include <sys/fs/zfs.h>
+#include <sys/zfs_ctldir.h>
+#include <sys/zfs_dir.h>
+#include <sys/zvol.h>
+#include <sharefs/share.h>
+#include <sys/dmu_objset.h>
+#include <sys/callb.h>
+#include <sys/taskq.h>
+
+#include "rump_private.h"
+#include "rump_dev_private.h"
+#include "rump_vfs_private.h"
+
+RUMP_COMPONENT(RUMP_COMPONENT_KERN_VFS)
+{
+	int error;
+
+	extern int physmem;
+
+	extern uint_t zfs_fsyncer_key;
+	extern uint_t rrw_tsd_key;
+
+	extern const struct bdevsw zfs_bdevsw;
+	extern const struct cdevsw zfs_cdevsw;
+
+	static int	zfs_bmajor = -1;
+	static int	zfs_cmajor = -1;
+
+	/* Set physmem to fit zfs limits. ZFS_MINMEGS * 2048 / PAGE_SIZE */
+	physmem = 262144;
+	error = devsw_attach("zfs", &zfs_bdevsw, &zfs_bmajor,
+	    &zfs_cdevsw, &zfs_cmajor);
+	if (error != 0) {
+		zvol_fini();
+		zfs_vfsfini();
+		spa_fini();
+		lwp_specific_key_delete(zfs_fsyncer_key);
+		lwp_specific_key_delete(rrw_tsd_key);
+	}
+	return;
+}
Index: src/sys/rump/fs/lib/libzfs/shlib_version
diff -u /dev/null src/sys/rump/fs/lib/libzfs/shlib_version:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/fs/lib/libzfs/shlib_version	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,4 @@
+#	$NetBSD: shlib_version,v 1.1 2011/01/18 22:21:23 haad Exp $
+#
+major=0
+minor=0

Index: src/sys/rump/kern/lib/libsolaris/Makefile
diff -u /dev/null src/sys/rump/kern/lib/libsolaris/Makefile:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/kern/lib/libsolaris/Makefile	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,18 @@
+#	$NetBSD: Makefile,v 1.1 2011/01/18 22:21:23 haad Exp $
+#
+
+S!=             cd ${.PARSEDIR}/../../../../;pwd
+
+.include "${.CURDIR}/../../../../modules/solaris/Makefile.solmod"
+
+LIB=	rumpkern_solaris
+
+# RUMP Stuff
+CPPFLAGS+=      -I${RUMPTOP}/librump/rumpkern -I${RUMPTOP}/librump/rumpvfs\
+		-I${RUMPTOP}/librump/rumpdev
+CPPFLAGS+=	-DASSERT=KASSERT
+
+SRCS+= component.c
+
+.include <bsd.lib.mk>
+.include <bsd.klinks.mk>
Index: src/sys/rump/kern/lib/libsolaris/component.c
diff -u /dev/null src/sys/rump/kern/lib/libsolaris/component.c:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/kern/lib/libsolaris/component.c	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,54 @@
+/*	$NetBSD: component.c,v 1.1 2011/01/18 22:21:23 haad Exp $ */
+
+/*
+ * Copyright (c) 2010 Antti Kantee.  All Rights Reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+__KERNEL_RCSID(0, "$NetBSD: component.c,v 1.1 2011/01/18 22:21:23 haad Exp $");
+
+#include <sys/param.h>
+#include <sys/conf.h>
+#include <sys/stat.h>
+#include <sys/kthread.h>
+#include <sys/callb.h>
+
+#include "rump_private.h"
+#include "rump_vfs_private.h"
+
+void opensolaris_init(void *);
+void opensolaris_fini(void *);
+
+RUMP_COMPONENT(RUMP_COMPONENT_KERN_VFS)
+{
+
+	extern void taskq_init(void);
+	extern void taskq_fini(void);
+
+	callb_init(NULL);
+	taskq_init();
+	opensolaris_init(NULL);
+
+	return;
+}
Index: src/sys/rump/kern/lib/libsolaris/shlib_version
diff -u /dev/null src/sys/rump/kern/lib/libsolaris/shlib_version:1.1
--- /dev/null	Tue Jan 18 22:21:24 2011
+++ src/sys/rump/kern/lib/libsolaris/shlib_version	Tue Jan 18 22:21:23 2011
@@ -0,0 +1,4 @@
+#	$NetBSD: shlib_version,v 1.1 2011/01/18 22:21:23 haad Exp $
+#
+major=0
+minor=0

Reply via email to