Module Name: src Committed By: haad Date: Sun Feb 28 14:45:48 UTC 2010
Modified Files: src/external/cddl/osnet/include: unistd.h src/external/cddl/osnet/sbin/zfs: Makefile src/external/cddl/osnet/sbin/zpool: Makefile src/external/cddl/osnet/sys/kern: ddi.c misc.c taskq.c src/external/cddl/osnet/sys/machine: endian.h src/external/cddl/osnet/sys/sys: byteorder.h cpuvar.h elf.h idmap.h modctl.h mount.h policy.h proc.h types.h uio.h vfs.h vnode.h zfs_context.h src/external/cddl/osnet/sys/sys/acl: acl_common.h Log Message: Add NetBSD build glue to build new zfs version 22 sources. To generate a diff of this commit: cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/include/unistd.h cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sbin/zfs/Makefile cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sbin/zpool/Makefile cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/kern/ddi.c cvs rdiff -u -r1.1 -r1.2 src/external/cddl/osnet/sys/kern/misc.c \ src/external/cddl/osnet/sys/kern/taskq.c cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/machine/endian.h cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/sys/sys/byteorder.h \ src/external/cddl/osnet/sys/sys/cpuvar.h \ src/external/cddl/osnet/sys/sys/elf.h \ src/external/cddl/osnet/sys/sys/modctl.h \ src/external/cddl/osnet/sys/sys/mount.h \ src/external/cddl/osnet/sys/sys/policy.h \ src/external/cddl/osnet/sys/sys/proc.h \ src/external/cddl/osnet/sys/sys/uio.h \ src/external/cddl/osnet/sys/sys/vfs.h \ src/external/cddl/osnet/sys/sys/vnode.h cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/sys/idmap.h cvs rdiff -u -r1.5 -r1.6 src/external/cddl/osnet/sys/sys/types.h \ src/external/cddl/osnet/sys/sys/zfs_context.h cvs rdiff -u -r1.2 -r1.3 src/external/cddl/osnet/sys/sys/acl/acl_common.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/cddl/osnet/include/unistd.h diff -u src/external/cddl/osnet/include/unistd.h:1.3 src/external/cddl/osnet/include/unistd.h:1.4 --- src/external/cddl/osnet/include/unistd.h:1.3 Sun Feb 21 01:46:34 2010 +++ src/external/cddl/osnet/include/unistd.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: unistd.h,v 1.3 2010/02/21 01:46:34 darran Exp $ */ +/* $NetBSD: unistd.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * Copyright (C) 2007 John Birrell <j...@freebsd.org> @@ -38,4 +38,6 @@ #define ftruncate64 ftruncate #define pread64 pread +#define _SC_PHYS_PAGES 500 + #endif Index: src/external/cddl/osnet/sbin/zfs/Makefile diff -u src/external/cddl/osnet/sbin/zfs/Makefile:1.2 src/external/cddl/osnet/sbin/zfs/Makefile:1.3 --- src/external/cddl/osnet/sbin/zfs/Makefile:1.2 Wed Oct 21 22:31:19 2009 +++ src/external/cddl/osnet/sbin/zfs/Makefile Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2009/10/21 22:31:19 joerg Exp $ +# $NetBSD: Makefile,v 1.3 2010/02/28 14:45:47 haad Exp $ .include "../../Makefile.zfs" @@ -18,7 +18,10 @@ LIBZFS_OBJDIR!= cd ${LIBZFS_SRCDIR} && ${PRINTOBJDIR} LDADD+= -L${LIBZFS_OBJDIR} -lzfs -LDADD+= -lm -lutil +LIBUMEM_OBJDIR!= cd ${LIBUMEM_SRCDIR} && ${PRINTOBJDIR} +LDADD+= -L${LIBUMEM_OBJDIR} -lumem + +LDADD+= -lm -lutil -lpthread .PATH: ${ZFSDIR}/dist/cmd/zfs Index: src/external/cddl/osnet/sbin/zpool/Makefile diff -u src/external/cddl/osnet/sbin/zpool/Makefile:1.2 src/external/cddl/osnet/sbin/zpool/Makefile:1.3 --- src/external/cddl/osnet/sbin/zpool/Makefile:1.2 Wed Oct 21 22:32:20 2009 +++ src/external/cddl/osnet/sbin/zpool/Makefile Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.2 2009/10/21 22:32:20 joerg Exp $ +# $NetBSD: Makefile,v 1.3 2010/02/28 14:45:47 haad Exp $ .include "../../Makefile.zfs" @@ -7,7 +7,7 @@ USETBL= yes SRCS= zpool_main.c zpool_iter.c zpool_util.c zpool_vdev.c -DPADD= ${LIBAVL} ${LIBZFS} ${LIBM} ${LIBNVPAIR} ${LIBUUTIL} ${LIBUTIL} +DPADD= ${LIBAVL} ${LIBZFS} ${LIBM} ${LIBNVPAIR} ${LIBUUTIL} ${LIBUTIL} ${LIBUMEM} LIBAVL_OBJDIR!= cd ${LIBAVL_SRCDIR} && ${PRINTOBJDIR} LDADD+= -L${LIBAVL_OBJDIR} -lavl @@ -21,7 +21,13 @@ LIBZFS_OBJDIR!= cd ${LIBZFS_SRCDIR} && ${PRINTOBJDIR} LDADD+= -L${LIBZFS_OBJDIR} -lzfs -LDADD+= -lm -lutil +LIBUMEM_OBJDIR!= cd ${LIBUMEM_SRCDIR} && ${PRINTOBJDIR} +LDADD+= -L${LIBUMEM_OBJDIR} -lumem + +LIBZPOOL_OBJDIR!= cd ${LIBZPOOL_SRCDIR} && ${PRINTOBJDIR} +LDADD+= -L${LIBZPOOL_OBJDIR} -lzpool + +LDADD+= -lm -lutil -lpthread .PATH: ${ZFSDIR}/dist/cmd/zpool Index: src/external/cddl/osnet/sys/kern/ddi.c diff -u src/external/cddl/osnet/sys/kern/ddi.c:1.2 src/external/cddl/osnet/sys/kern/ddi.c:1.3 --- src/external/cddl/osnet/sys/kern/ddi.c:1.2 Mon Aug 10 22:41:51 2009 +++ src/external/cddl/osnet/sys/kern/ddi.c Sun Feb 28 14:45:47 2010 @@ -34,6 +34,7 @@ #include <sys/ddi.h> #include <sys/errno.h> #include <sys/param.h> +#include <sys/kernel.h> #include <sys/kmem.h> #include <sys/cmn_err.h> #include <sys/namei.h> @@ -566,3 +567,17 @@ (void)do_sys_unlink(pn, UIO_SYSSPACE); PNBUF_PUT(pn); } + +clock_t +ddi_get_lbolt() +{ + + return hardclock_ticks; +} + +int64_t +ddi_get_lbolt64() +{ + + return hardclock_ticks; +} Index: src/external/cddl/osnet/sys/kern/misc.c diff -u src/external/cddl/osnet/sys/kern/misc.c:1.1 src/external/cddl/osnet/sys/kern/misc.c:1.2 --- src/external/cddl/osnet/sys/kern/misc.c:1.1 Fri Aug 7 20:57:57 2009 +++ src/external/cddl/osnet/sys/kern/misc.c Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: misc.c,v 1.1 2009/08/07 20:57:57 haad Exp $ */ +/* $NetBSD: misc.c,v 1.2 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -107,6 +107,28 @@ } void +thread_join(uint64_t kid) +{ + + return; +} + +int +newproc(void (*pc)(), caddr_t arg, id_t cid, int pri, struct contract **ct, + pid_t pid) +{ + int error; + + ASSERT(cid == PRI_NONE); + + error = kthread_create(pri, KTHREAD_MPSAFE, NULL, + pc, arg, NULL, "zfs_proc"); + KASSERT(error == 0); + + return 0; +} + +void kmem_reap(void) { int bufcnt; Index: src/external/cddl/osnet/sys/kern/taskq.c diff -u src/external/cddl/osnet/sys/kern/taskq.c:1.1 src/external/cddl/osnet/sys/kern/taskq.c:1.2 --- src/external/cddl/osnet/sys/kern/taskq.c:1.1 Fri Aug 7 20:57:57 2009 +++ src/external/cddl/osnet/sys/kern/taskq.c Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: taskq.c,v 1.1 2009/08/07 20:57:57 haad Exp $ */ +/* $NetBSD: taskq.c,v 1.2 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -399,6 +399,8 @@ #define SYSTEM_TASKQ_SIZE 1 int system_taskq_size = SYSTEM_TASKQ_SIZE; +#define TASKQ_ACTIVE 0x00010000 + /* * Dynamic task queue threads that don't get any work within * taskq_thread_timeout destroy themselves Index: src/external/cddl/osnet/sys/machine/endian.h diff -u src/external/cddl/osnet/sys/machine/endian.h:1.2 src/external/cddl/osnet/sys/machine/endian.h:1.3 --- src/external/cddl/osnet/sys/machine/endian.h:1.2 Sun Feb 21 01:46:35 2010 +++ src/external/cddl/osnet/sys/machine/endian.h Sun Feb 28 14:45:47 2010 @@ -1,5 +1,3 @@ -/* $NetBSD: endian.h,v 1.2 2010/02/21 01:46:35 darran Exp $ */ - /*- * Copyright (c) 2007 Pawel Jakub Dawidek <p...@freebsd.org> * All rights reserved. Index: src/external/cddl/osnet/sys/sys/byteorder.h diff -u src/external/cddl/osnet/sys/sys/byteorder.h:1.3 src/external/cddl/osnet/sys/sys/byteorder.h:1.4 --- src/external/cddl/osnet/sys/sys/byteorder.h:1.3 Sun Feb 21 01:46:35 2010 +++ src/external/cddl/osnet/sys/sys/byteorder.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: byteorder.h,v 1.3 2010/02/21 01:46:35 darran Exp $ */ +/* $NetBSD: byteorder.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -64,4 +64,27 @@ #define LE_64(x) BMASK_64(x) #endif +/* + * Macros to convert from a specific byte order to/from native byte order + */ +#ifdef _BIG_ENDIAN +#define BE_8(x) BMASK_8(x) +#define BE_16(x) BMASK_16(x) +#define BE_32(x) BMASK_32(x) +#define BE_64(x) BMASK_64(x) +#define LE_8(x) BSWAP_8(x) +#define LE_16(x) BSWAP_16(x) +#define LE_32(x) BSWAP_32(x) +#define LE_64(x) BSWAP_64(x) +#else +#define LE_8(x) BMASK_8(x) +#define LE_16(x) BMASK_16(x) +#define LE_32(x) BMASK_32(x) +#define LE_64(x) BMASK_64(x) +#define BE_8(x) BSWAP_8(x) +#define BE_16(x) BSWAP_16(x) +#define BE_32(x) BSWAP_32(x) +#define BE_64(x) BSWAP_64(x) +#endif + #endif /* _OPENSOLARIS_SYS_BYTEORDER_H_ */ Index: src/external/cddl/osnet/sys/sys/cpuvar.h diff -u src/external/cddl/osnet/sys/sys/cpuvar.h:1.3 src/external/cddl/osnet/sys/sys/cpuvar.h:1.4 --- src/external/cddl/osnet/sys/sys/cpuvar.h:1.3 Sun Feb 21 01:46:35 2010 +++ src/external/cddl/osnet/sys/sys/cpuvar.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: cpuvar.h,v 1.3 2010/02/21 01:46:35 darran Exp $ */ +/* $NetBSD: cpuvar.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -19,8 +19,6 @@ * information: Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END - * - * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/cpuvar.h,v 1.5.2.1 2009/08/03 08:13:06 kensmith Exp $ */ /* @@ -32,30 +30,8 @@ #define _COMPAT_OPENSOLARIS_SYS_CPUVAR_H #include <sys/mutex.h> -#include <sys/cpuvar_defs.h> #ifdef _KERNEL - -struct cyc_cpu; - -typedef struct { - int cpuid; - struct cyc_cpu *cpu_cyclic; - uint32_t cpu_flags; - uint_t cpu_intr_actv; - uintptr_t cpu_profile_pc; - uintptr_t cpu_profile_upc; - uintptr_t cpu_dtrace_caller; /* DTrace: caller, if any */ - hrtime_t cpu_dtrace_chillmark; /* DTrace: chill mark time */ - hrtime_t cpu_dtrace_chilled; /* DTrace: total chill time */ -} solaris_cpu_t; - -/* Some code may choose to redefine this if pcpu_t would be more useful. */ -#define cpu_t solaris_cpu_t -#define cpu_id cpuid - -extern solaris_cpu_t solaris_cpu[]; - #define CPU_CACHE_COHERENCE_SIZE 64 /* @@ -67,8 +43,7 @@ */ #define CPUC_SIZE (sizeof (uint16_t) + sizeof (uintptr_t) + \ sizeof (kmutex_t)) -#define CPUC_SIZE1 roundup(CPUC_SIZE, CPU_CACHE_COHERENCE_SIZE) -#define CPUC_PADSIZE CPUC_SIZE1 - CPUC_SIZE +#define CPUC_PADSIZE CPU_CACHE_COHERENCE_SIZE - CPUC_SIZE typedef struct cpu_core { uint16_t cpuc_dtrace_flags; /* DTrace flags */ @@ -78,50 +53,33 @@ } cpu_core_t; extern cpu_core_t cpu_core[]; - -extern kmutex_t cpu_lock; #endif /* _KERNEL */ /* - * Flags in the CPU structure. - * - * These are protected by cpu_lock (except during creation). - * - * Offlined-CPUs have three stages of being offline: - * - * CPU_ENABLE indicates that the CPU is participating in I/O interrupts - * that can be directed at a number of different CPUs. If CPU_ENABLE - * is off, the CPU will not be given interrupts that can be sent elsewhere, - * but will still get interrupts from devices associated with that CPU only, - * and from other CPUs. - * - * CPU_OFFLINE indicates that the dispatcher should not allow any threads - * other than interrupt threads to run on that CPU. A CPU will not have - * CPU_OFFLINE set if there are any bound threads (besides interrupts). - * - * CPU_QUIESCED is set if p_offline was able to completely turn idle the - * CPU and it will not have to run interrupt threads. In this case it'll - * stay in the idle loop until CPU_QUIESCED is turned off. - * - * CPU_FROZEN is used only by CPR to mark CPUs that have been successfully - * suspended (in the suspend path), or have yet to be resumed (in the resume - * case). - * - * On some platforms CPUs can be individually powered off. - * The following flags are set for powered off CPUs: CPU_QUIESCED, - * CPU_OFFLINE, and CPU_POWEROFF. The following flags are cleared: - * CPU_RUNNING, CPU_READY, CPU_EXISTS, and CPU_ENABLE. + * DTrace flags. */ -#define CPU_RUNNING 0x001 /* CPU running */ -#define CPU_READY 0x002 /* CPU ready for cross-calls */ -#define CPU_QUIESCED 0x004 /* CPU will stay in idle */ -#define CPU_EXISTS 0x008 /* CPU is configured */ -#define CPU_ENABLE 0x010 /* CPU enabled for interrupts */ -#define CPU_OFFLINE 0x020 /* CPU offline via p_online */ -#define CPU_POWEROFF 0x040 /* CPU is powered off */ -#define CPU_FROZEN 0x080 /* CPU is frozen via CPR suspend */ -#define CPU_SPARE 0x100 /* CPU offline available for use */ -#define CPU_FAULTED 0x200 /* CPU offline diagnosed faulty */ +#define CPU_DTRACE_NOFAULT 0x0001 /* Don't fault */ +#define CPU_DTRACE_DROP 0x0002 /* Drop this ECB */ +#define CPU_DTRACE_BADADDR 0x0004 /* DTrace fault: bad address */ +#define CPU_DTRACE_BADALIGN 0x0008 /* DTrace fault: bad alignment */ +#define CPU_DTRACE_DIVZERO 0x0010 /* DTrace fault: divide by zero */ +#define CPU_DTRACE_ILLOP 0x0020 /* DTrace fault: illegal operation */ +#define CPU_DTRACE_NOSCRATCH 0x0040 /* DTrace fault: out of scratch */ +#define CPU_DTRACE_KPRIV 0x0080 /* DTrace fault: bad kernel access */ +#define CPU_DTRACE_UPRIV 0x0100 /* DTrace fault: bad user access */ +#define CPU_DTRACE_TUPOFLOW 0x0200 /* DTrace fault: tuple stack overflow */ +#if defined(__sparc) +#define CPU_DTRACE_FAKERESTORE 0x0400 /* pid provider hint to getreg */ +#endif +#define CPU_DTRACE_ENTRY 0x0800 /* pid provider hint to ustack() */ +#define CPU_DTRACE_BADSTACK 0x1000 /* DTrace fault: bad stack */ + +#define CPU_DTRACE_FAULT (CPU_DTRACE_BADADDR | CPU_DTRACE_BADALIGN | \ + CPU_DTRACE_DIVZERO | CPU_DTRACE_ILLOP | \ + CPU_DTRACE_NOSCRATCH | CPU_DTRACE_KPRIV | \ + CPU_DTRACE_UPRIV | CPU_DTRACE_TUPOFLOW | \ + CPU_DTRACE_BADSTACK) +#define CPU_DTRACE_ERROR (CPU_DTRACE_FAULT | CPU_DTRACE_DROP) typedef enum { CPU_INIT, Index: src/external/cddl/osnet/sys/sys/elf.h diff -u src/external/cddl/osnet/sys/sys/elf.h:1.3 src/external/cddl/osnet/sys/sys/elf.h:1.4 --- src/external/cddl/osnet/sys/sys/elf.h:1.3 Sun Feb 21 01:46:35 2010 +++ src/external/cddl/osnet/sys/sys/elf.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: elf.h,v 1.3 2010/02/21 01:46:35 darran Exp $ */ +/* $NetBSD: elf.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -29,20 +29,32 @@ #ifndef _SYS__ELF_SOLARIS_H_ #define _SYS__ELF_SOLARIS_H_ -#if HAVE_NBTOOL_CONFIG_H -#include <nbinclude/sys/exec_elf.h> -#else -#include <sys/exec_elf.h> -#endif +#include_next <sys/elf.h> -#define SHT_SUNW_dof 0x6ffffff4 -#define EM_AMD64 EM_X86_64 +#define __sElfN(x) typedef __CONCAT(__CONCAT(__CONCAT(Elf,__ELF_WORD_SIZE),_),x) x -#define __ELF_WORD_SIZE ELFSIZE -#define __CONCAT(x,y) x ## y -#define __sElfN(x) typedef __CONCAT(Elf32_,x) x +__sElfN(Addr); +__sElfN(Cap); +__sElfN(Dyn); +__sElfN(Ehdr); +__sElfN(Move); +__sElfN(Off); +__sElfN(Phdr); +__sElfN(Rel); +__sElfN(Rela); +__sElfN(Shdr); +__sElfN(Sym); +__sElfN(Syminfo); +__sElfN(Verdaux); +__sElfN(Verdef); +__sElfN(Vernaux); +__sElfN(Verneed); +__sElfN(Versym); + +__sElfN(Half); +__sElfN(Sword); +__sElfN(Word); -#if 0 /* XXX not needed? */ #if __ELF_WORD_SIZE == 32 typedef Elf32_Word Xword; /* Xword/Sxword are 32-bits in Elf32 */ typedef Elf32_Sword Sxword; @@ -102,6 +114,5 @@ #define Elf_ver_line_4 __ElfN(ver_line_4) #define Elf_ver_line_5 __ElfN(ver_line_5) #define Elf_ver_need_title __ElfN(ver_need_title) -#endif #endif /* !_SYS__ELF_SOLARIS_H_ */ Index: src/external/cddl/osnet/sys/sys/modctl.h diff -u src/external/cddl/osnet/sys/sys/modctl.h:1.3 src/external/cddl/osnet/sys/sys/modctl.h:1.4 --- src/external/cddl/osnet/sys/sys/modctl.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/modctl.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: modctl.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: modctl.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * Copyright (C) 2007 John Birrell <j...@freebsd.org> @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/modctl.h,v 1.2.4.1 2009/08/03 08:13:06 kensmith Exp $ + * $FreeBSD: src/sys/compat/opensolaris/sys/modctl.h,v 1.1 2007/11/28 21:50:40 jb Exp $ * */ @@ -34,8 +34,5 @@ #include <sys/param.h> #include <sys/linker.h> -#include <sys/module.h> - -typedef struct module dtrace_modctl_t; #endif /* _COMPAT_OPENSOLARIS_SYS_MODCTL_H */ Index: src/external/cddl/osnet/sys/sys/mount.h diff -u src/external/cddl/osnet/sys/sys/mount.h:1.3 src/external/cddl/osnet/sys/sys/mount.h:1.4 --- src/external/cddl/osnet/sys/sys/mount.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/mount.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: mount.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: mount.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2007 Pawel Jakub Dawidek <p...@freebsd.org> @@ -63,4 +63,6 @@ int umount2(const char *spec, int mflag); +#define vfs_fstype mnt_op->vfs_name + #endif /* !_OPENSOLARIS_SYS_MOUNT_H_ */ Index: src/external/cddl/osnet/sys/sys/policy.h diff -u src/external/cddl/osnet/sys/sys/policy.h:1.3 src/external/cddl/osnet/sys/sys/policy.h:1.4 --- src/external/cddl/osnet/sys/sys/policy.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/policy.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: policy.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: policy.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2007 Pawel Jakub Dawidek <p...@freebsd.org> @@ -35,8 +35,6 @@ #ifdef _KERNEL -#include <sys/vnode.h> - struct mount; struct ucred; struct vattr; @@ -45,7 +43,7 @@ int secpolicy_zfs(struct kauth_cred *cred); int secpolicy_sys_config(struct kauth_cred *cred, int checkonly); int secpolicy_zinject(struct kauth_cred *cred); -int secpolicy_fs_mount(struct kauth_cred *cred, struct vnode *mvp, struct mount *vfsp); +int secpolicy_fs_mount(struct kauth_cred *cred, vnode_t *mvp, struct mount *vfsp); int secpolicy_fs_unmount(struct kauth_cred *cred, struct mount *vfsp); int secpolicy_basic_link(struct kauth_cred *cred); int secpolicy_vnode_stky_modify(struct kauth_cred *cred); Index: src/external/cddl/osnet/sys/sys/proc.h diff -u src/external/cddl/osnet/sys/sys/proc.h:1.3 src/external/cddl/osnet/sys/sys/proc.h:1.4 --- src/external/cddl/osnet/sys/sys/proc.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/proc.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: proc.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: proc.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -74,6 +74,8 @@ #define max_ncpus ncpu #define boot_max_ncpus ncpu #define curthread curlwp +#define syscid PRI_NONE +#define sysccid PRI_NONE #define TS_RUN 0 @@ -89,9 +91,15 @@ #define ZFS_KSTACK_PAGES 0 #endif +struct contract { +}; + kthread_t *thread_create(void *, size_t, void (*)(), void *, size_t, proc_t *, int, pri_t); void thread_exit(void); +void thread_join(uint64_t); + +int newproc(void (*)(), caddr_t, id_t, int, struct contract **, pid_t); #endif /* _KERNEL */ Index: src/external/cddl/osnet/sys/sys/uio.h diff -u src/external/cddl/osnet/sys/sys/uio.h:1.3 src/external/cddl/osnet/sys/sys/uio.h:1.4 --- src/external/cddl/osnet/sys/sys/uio.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/uio.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: uio.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: uio.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -61,10 +61,12 @@ #define _OPENSOLARIS_SYS_UIO_H_ #include_next <sys/uio.h> +#include <sys/sysmacros.h> #include <sys/debug.h> #ifndef _KERNEL #include <assert.h> +#include <string.h> #define FOF_OFFSET 1 /* Use the offset in uio argument */ @@ -79,7 +81,21 @@ }; #endif +struct xuio { + struct uio xu_uio; + int xuio_rw; + void *xuio_priv; +}; + +/* XXX HACK ? how xuio can be handled properly */ +#define uio_extflg uio_offset +#define UIO_XUIO 0x0004 /* Structure is xuio_t */ + +#define XUIO_XUZC_PRIV(xuio) ((xuio)->xuio_priv); +#define XUIO_XUZC_RW(xuio) ((xuio)->xuio_rw); + typedef struct uio uio_t; +typedef struct xuio xuio_t; typedef struct iovec iovec_t; typedef enum uio_seg uio_seg_t; @@ -95,6 +111,48 @@ assert(uio->uio_rw == dir); return (uiomove(cp, (int)n, uio)); } + +static __inline int +zfs_uiocopy(void *cp, size_t n, enum uio_rw dir, uio_t *uio, size_t *cbytes) +{ + uio_t uio2; + int err; + + memcpy(&uio2, uio, sizeof(*uio)); + assert(uio->uio_rw == dir); + if ((err = uiomove(cp, (int)n, &uio2)) != 0) + return err; + + *cbytes = uio->uio_resid - uio2.uio_resid; + + return (0); +} + +static __inline void +zfs_uioskip(uio_t *uiop, size_t n) +{ + if (n > uiop->uio_resid) + return; + while (n != 0) { + register iovec_t *iovp = uiop->uio_iov; + register size_t niovb = MIN(iovp->iov_len, n); + + if (niovb == 0) { + uiop->uio_iov++; + uiop->uio_iovcnt--; + continue; + } + iovp->iov_base += niovb; + uiop->uio_offset += niovb; + iovp->iov_len -= niovb; + uiop->uio_resid -= niovb; + n -= niovb; + } + +} + #define uiomove(cp, n, dir, uio) zfs_uiomove((cp), (n), (dir), (uio)) +#define uiocopy(cp, n, dir, uio, cbytes) zfs_uiocopy((cp), (n), (dir), (uio), (cbytes)) +#define uioskip(uio, size) zfs_uioskip((uio), (size)) #endif /* !_OPENSOLARIS_SYS_UIO_H_ */ Index: src/external/cddl/osnet/sys/sys/vfs.h diff -u src/external/cddl/osnet/sys/sys/vfs.h:1.3 src/external/cddl/osnet/sys/sys/vfs.h:1.4 --- src/external/cddl/osnet/sys/sys/vfs.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/vfs.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: vfs.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: vfs.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2007 Pawel Jakub Dawidek <p...@freebsd.org> @@ -45,7 +45,7 @@ #define vfs_flag mnt_flag #define vfs_data mnt_data #define vfs_count mnt_refcnt -#define vfs_fsid mnt_stat.f_fsid +#define vfs_fsid mnt_stat.f_fsid #define vfs_bsize mnt_stat.f_bsize #define v_flag v_vflag Index: src/external/cddl/osnet/sys/sys/vnode.h diff -u src/external/cddl/osnet/sys/sys/vnode.h:1.3 src/external/cddl/osnet/sys/sys/vnode.h:1.4 --- src/external/cddl/osnet/sys/sys/vnode.h:1.3 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/vnode.h Sun Feb 28 14:45:47 2010 @@ -1,5 +1,5 @@ -/* $NetBSD: vnode.h,v 1.3 2010/02/21 01:46:36 darran Exp $ */ +/* $NetBSD: vnode.h,v 1.4 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -175,6 +175,7 @@ uint8_t xoa_av_quarantined; uint8_t xoa_av_modified; uint8_t xoa_av_scanstamp[AV_SCANSTAMP_SZ]; + uint8_t xoa_reparse; } xoptattr_t; @@ -262,6 +263,8 @@ #define VSA_ACE_ALLTYPES 0x0040 #define VSA_ACE_ACLFLAGS 0x0080 /* get/set ACE ACL flags */ +#define v_lock v_interlock + int vn_is_readonly(vnode_t *); #define vn_vfswlock(vp) (0) @@ -380,6 +383,7 @@ #define XAT0_AV_QUARANTINED 0x00000400 /* anti-virus quarantine */ #define XAT0_AV_MODIFIED 0x00000800 /* anti-virus modified */ #define XAT0_AV_SCANSTAMP 0x00001000 /* anti-virus scanstamp */ +#define XAT0_REPARSE 0x00002000 /* FS reparse point */ #define XAT0_ALL_ATTRS (XAT0_CREATETIME|XAT0_ARCHIVE|XAT0_SYSTEM| \ XAT0_READONLY|XAT0_HIDDEN|XAT0_NOUNLINK|XAT0_IMMUTABLE|XAT0_APPENDONLY| \ @@ -417,6 +421,7 @@ #define XAT_AV_QUARANTINED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_QUARANTINED) #define XAT_AV_MODIFIED ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_MODIFIED) #define XAT_AV_SCANSTAMP ((XAT0_INDEX << XVA_SHFT) | XAT0_AV_SCANSTAMP) +#define XAT_REPARSE ((XAT0_INDEX << XVA_SHFT) | XAT0_REPARSE) /* * The returned attribute map array (xva_rtnattrmap[]) is located past the @@ -437,6 +442,14 @@ (xvap)->xva_reqattrmap[XVA_INDEX(attr)] |= XVA_ATTRBIT(attr) /* + * XVA_CLR_REQ() clears an attribute bit in the proper element in the bitmap + * of requested attributes (xva_reqattrmap[]). + */ +#define XVA_CLR_REQ(xvap, attr) \ + ASSERT((xvap)->xva_vattr.va_mask | AT_XVATTR); \ + ASSERT((xvap)->xva_magic == XVA_MAGIC); \ + (xvap)->xva_reqattrmap[XVA_INDEX(attr)] &= ~XVA_ATTRBIT(attr) +/* * XVA_SET_RTN() sets an attribute bit in the proper element in the bitmap * of returned attributes (xva_rtnattrmap[]). */ @@ -640,18 +653,23 @@ return (do_sys_unlink(fnamep, seg)); } +#define VN_RELE_ASYNC(vp, taskq) vrele_async((vp)) +#define vn_exists(a) do { } while(0) +#define vn_reinit(a) vclean((a), 0) + /* * Flags for VOP_LOOKUP * * Defined in file.h, but also possible, FIGNORECASE * */ -#define LOOKUP_XATTR 0x02 /* lookup up extended attr dir */ +#define LOOKUP_XATTR 0x02 /* lookup up extended attr dir */ /* * Flags for VOP_READDIR */ -#define V_RDDIR_ENTFLAGS 0x01 /* request dirent flags */ +#define V_RDDIR_ENTFLAGS 0x01 /* request dirent flags */ +#define V_RDDIR_ACCFILTER 0x02 /* filter out inaccessible dirents */ /* * Extensible vnode attribute (xva) routines: Index: src/external/cddl/osnet/sys/sys/idmap.h diff -u src/external/cddl/osnet/sys/sys/idmap.h:1.2 src/external/cddl/osnet/sys/sys/idmap.h:1.3 --- src/external/cddl/osnet/sys/sys/idmap.h:1.2 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/idmap.h Sun Feb 28 14:45:47 2010 @@ -1,5 +1,3 @@ -/* $NetBSD: idmap.h,v 1.2 2010/02/21 01:46:36 darran Exp $ */ - /* * CDDL HEADER START * Index: src/external/cddl/osnet/sys/sys/types.h diff -u src/external/cddl/osnet/sys/sys/types.h:1.5 src/external/cddl/osnet/sys/sys/types.h:1.6 --- src/external/cddl/osnet/sys/sys/types.h:1.5 Thu Feb 25 00:18:44 2010 +++ src/external/cddl/osnet/sys/sys/types.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: types.h,v 1.5 2010/02/25 00:18:44 darran Exp $ */ +/* $NetBSD: types.h,v 1.6 2010/02/28 14:45:47 haad Exp $ */ /*- * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -125,7 +125,6 @@ typedef off_t offset_t; typedef long ptrdiff_t; /* pointer difference */ typedef int64_t rlim64_t; -typedef __caddr_t caddr_t; /* core address */ #else Index: src/external/cddl/osnet/sys/sys/zfs_context.h diff -u src/external/cddl/osnet/sys/sys/zfs_context.h:1.5 src/external/cddl/osnet/sys/sys/zfs_context.h:1.6 --- src/external/cddl/osnet/sys/sys/zfs_context.h:1.5 Mon Oct 12 10:05:29 2009 +++ src/external/cddl/osnet/sys/sys/zfs_context.h Sun Feb 28 14:45:47 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: zfs_context.h,v 1.5 2009/10/12 10:05:29 haad Exp $ */ +/* $NetBSD: zfs_context.h,v 1.6 2010/02/28 14:45:47 haad Exp $ */ /* * CDDL HEADER START @@ -42,7 +42,7 @@ #include <sys/mutex.h> #include <sys/rwlock.h> #include <sys/condvar.h> - + #define _SYS_SYSTM_H #define _SYS_DEBUG_H #define _SYS_T_LOCK_H @@ -81,6 +81,7 @@ #include <sys/u8_textprep.h> #include <sys/zone.h> #include <sys/pathname.h> +#include <sys/sysevent.h> extern void panic(const char *, ...); @@ -94,6 +95,8 @@ #define ABS(a) ((a) < 0 ? -(a) : (a)) #endif +extern int aok; + /* * Debugging */ @@ -203,9 +206,20 @@ #define thread_create(stk, stksize, func, arg, len, pp, state, pri) \ zk_thread_create(func, arg) #define thread_exit() thr_exit(NULL) +#define thread_join(t) panic("libzpool cannot join threads") +#define newproc(f, a, cid, pri, ctp, pid) (ENOSYS) + extern kthread_t *zk_thread_create(void (*func)(), void *arg); +/* In NetBSD struct proc is visible in userspace therefore we use it's original + definition. */ +/* struct proc { + uintptr_t this_is_never_used_dont_dereference_it; + }; */ + +extern struct proc p0; + #define issig(why) (FALSE) #define ISSIG(thr, why) (FALSE) #define makedevice(min, maj) makedev((min), (maj)) @@ -293,24 +307,31 @@ typedef uintptr_t taskqid_t; typedef void (task_func_t)(void *); -#define TASKQ_PREPOPULATE 0x0001 -#define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ -#define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ - -#define TQ_SLEEP KM_SLEEP /* Can block for memory */ -#define TQ_NOSLEEP KM_NOSLEEP /* cannot block for memory; may fail */ -#define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ +#define TASKQ_PREPOPULATE 0x0001 +#define TASKQ_CPR_SAFE 0x0002 /* Use CPR safe protocol */ +#define TASKQ_DYNAMIC 0x0004 /* Use dynamic thread scheduling */ +#define TASKQ_THREADS_CPU_PCT 0x0008 /* Scale # threads by # cpus */ +#define TASKQ_DC_BATCH 0x0010 /* Mark threads as batch */ + +#define TQ_SLEEP KM_SLEEP /* Can block for memory */ +#define TQ_NOSLEEP KM_NOSLEEP /* cannot block for memory; may fail */ +#define TQ_NOQUEUE 0x02 /* Do not enqueue if can't dispatch */ +#define TQ_FRONT 0x08 /* Queue in front */ extern taskq_t *system_taskq; -extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +extern taskq_t *taskq_create(const char *, int, pri_t, int, int, uint_t); +#define taskq_create_proc(a, b, c, d, e, p, f) \ + (taskq_create(a, b, c, d, e, f)) +#define taskq_create_sysdc(a, b, d, e, p, dc, f) \ + (taskq_create(a, b, maxclsyspri, d, e, f)) extern taskqid_t taskq_dispatch(taskq_t *, task_func_t, void *, uint_t); -extern void taskq_destroy(taskq_t *); -extern void taskq_wait(taskq_t *); -extern int taskq_member(taskq_t *, void *); - -extern void system_taskq_init(void); - +extern void taskq_destroy(taskq_t *); +extern void taskq_wait(taskq_t *); +extern int taskq_member(taskq_t *, void *); +extern void system_taskq_init(void); +extern void system_taskq_fini(void); + #define XVA_MAPSIZE 3 #define XVA_MAGIC 0x78766174 @@ -378,10 +399,15 @@ #define lbolt (gethrtime() >> 23) #define lbolt64 (gethrtime() >> 23) #define hz 119 /* frequency when using gethrtime() >> 23 for lbolt */ - + extern void delay(clock_t ticks); #define gethrestime_sec() time(NULL) +#define gethrestime(t) \ + do {\ + (t)->tv_sec = gethrestime_sec();\ + (t)->tv_nsec = 0;\ + } while (0); #define max_ncpus 64 @@ -439,6 +465,8 @@ extern char hw_serial[]; extern int ddi_strtoul(const char *str, char **nptr, int base, unsigned long *result); +#define ddi_get_lbolt() (gethrtime() >> 23) +#define ddi_get_lbolt64() (gethrtime() >> 23) /* ZFS Boot Related stuff. */ @@ -538,7 +566,19 @@ #define di_devlink_init(a, b) (NULL) #define di_devlink_fini(a) (0) typedef void *di_devlink_handle_t; - + +extern char *kmem_asprintf(const char *fmt, ...); +#define strfree(str) kmem_free((str), strlen(str)+1) + +//#define print_timestamp(a) 0 + +extern void print_timestamp(int); + +#define DEV_PHYS_PATH "phys_path" + +#define DDI_SLEEP KM_SLEEP +#define ddi_log_sysevent(_a, _b, _c, _d, _e, _f, _g) 0 + #else /* _KERNEL */ #include <sys/systm.h> @@ -549,6 +589,7 @@ #include <sys/stdint.h> #include <sys/note.h> #include <sys/kernel.h> +#include <sys/kstat.h> #include <sys/debug.h> #include <sys/proc.h> #include <sys/sysmacros.h> @@ -590,6 +631,9 @@ #define lbolt hardclock_ticks #define lbolt64 lbolt +clock_t ddi_get_lbolt(void); +int64_t ddi_get_lbolt64(void); + #ifdef __cplusplus } #endif @@ -626,10 +670,29 @@ #define tsd_get(x) lwp_getspecific(x) #define tsd_set(x, y) (lwp_setspecific(x, y), 0) #define kmem_debugging() 0 + +#define zone_get_hostid(a) 0 + +extern char *kmem_asprintf(const char *fmt, ...); +#define strfree(str) kmem_free((str), strlen(str)+1) + +/* NetBSD doesn't need this routines in zfs code, yet */ +#define taskq_create_proc(a, b, c, d, e, p, f) \ + (taskq_create(a, b, c, d, e, f)) +#define taskq_create_sysdc(a, b, d, e, p, dc, f) \ + (taskq_create(a, b, maxclsyspri, d, e, f)) + #define MAXUID UID_MAX #define FIGNORECASE 0 #define CREATE_XATTR_DIR 0 +#define DEV_PHYS_PATH "phys_path" + +#define DDI_SLEEP KM_SLEEP +#define ddi_log_sysevent(_a, _b, _c, _d, _e, _f, _g) 0 + +#define sys_shutdown 0 + #endif /* _KERNEL */ #endif /* _SYS_ZFS_CONTEXT_H */ Index: src/external/cddl/osnet/sys/sys/acl/acl_common.h diff -u src/external/cddl/osnet/sys/sys/acl/acl_common.h:1.2 src/external/cddl/osnet/sys/sys/acl/acl_common.h:1.3 --- src/external/cddl/osnet/sys/sys/acl/acl_common.h:1.2 Sun Feb 21 01:46:36 2010 +++ src/external/cddl/osnet/sys/sys/acl/acl_common.h Sun Feb 28 14:45:47 2010 @@ -1,5 +1,3 @@ -/* $NetBSD: acl_common.h,v 1.2 2010/02/21 01:46:36 darran Exp $ */ - /* * CDDL HEADER START *