svn commit: r294069 - in user/ngie/stable-10-libnv: . contrib/llvm/patches contrib/llvm/tools/clang/tools/driver crypto/openssh etc gnu/usr.bin/groff/tmac include lib/clang lib/libpmc release relea...

Garrett Cooper ngie at FreeBSD.org
Fri Jan 15 02:58:24 UTC 2016


Author: ngie
Date: Fri Jan 15 02:58:20 2016
New Revision: 294069
URL: https://svnweb.freebsd.org/changeset/base/294069

Log:
  MFstable/10 @ r294068

Added:
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe_dump.h
     - copied unchanged from r294068, stable/10/sys/dev/bxe/bxe_dump.h
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe_ioctl.h
     - copied unchanged from r294068, stable/10/sys/dev/bxe/bxe_ioctl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/ef10_impl.h
     - copied unchanged from r294068, stable/10/sys/dev/sfxge/common/ef10_impl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/medford_impl.h
     - copied unchanged from r294068, stable/10/sys/dev/sfxge/common/medford_impl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/medford_nic.c
     - copied unchanged from r294068, stable/10/sys/dev/sfxge/common/medford_nic.c
  user/ngie/stable-10-libnv/usr.bin/clang/clang/CC.sh
     - copied unchanged from r294068, stable/10/usr.bin/clang/clang/CC.sh
  user/ngie/stable-10-libnv/usr.sbin/sesutil/eltsub.c
     - copied unchanged from r294068, stable/10/usr.sbin/sesutil/eltsub.c
  user/ngie/stable-10-libnv/usr.sbin/sesutil/eltsub.h
     - copied unchanged from r294068, stable/10/usr.sbin/sesutil/eltsub.h
Deleted:
  user/ngie/stable-10-libnv/contrib/llvm/patches/patch-r257109-add-CC-aliases.diff
Modified:
  user/ngie/stable-10-libnv/Makefile
  user/ngie/stable-10-libnv/contrib/llvm/tools/clang/tools/driver/driver.cpp
  user/ngie/stable-10-libnv/crypto/openssh/readconf.c
  user/ngie/stable-10-libnv/etc/Makefile
  user/ngie/stable-10-libnv/gnu/usr.bin/groff/tmac/mdoc.local.in
  user/ngie/stable-10-libnv/include/limits.h
  user/ngie/stable-10-libnv/lib/clang/clang.build.mk
  user/ngie/stable-10-libnv/lib/libpmc/pmc.h
  user/ngie/stable-10-libnv/release/doc/en_US.ISO8859-1/errata/article.xml
  user/ngie/stable-10-libnv/release/doc/share/xml/errata.xml
  user/ngie/stable-10-libnv/release/doc/share/xml/security.xml
  user/ngie/stable-10-libnv/release/release.sh
  user/ngie/stable-10-libnv/share/man/man4/sfxge.4
  user/ngie/stable-10-libnv/share/mk/local.sys.mk
  user/ngie/stable-10-libnv/share/mk/sys.mk
  user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_proto.h
  user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_systrace_args.c
  user/ngie/stable-10-libnv/sys/amd64/linux32/syscalls.master
  user/ngie/stable-10-libnv/sys/boot/forth/loader.conf
  user/ngie/stable-10-libnv/sys/boot/forth/menu-commands.4th
  user/ngie/stable-10-libnv/sys/boot/forth/menu.rc
  user/ngie/stable-10-libnv/sys/boot/forth/support.4th
  user/ngie/stable-10-libnv/sys/boot/i386/loader/main.c
  user/ngie/stable-10-libnv/sys/boot/userboot/userboot/main.c
  user/ngie/stable-10-libnv/sys/boot/zfs/libzfs.h
  user/ngie/stable-10-libnv/sys/boot/zfs/zfs.c
  user/ngie/stable-10-libnv/sys/boot/zfs/zfsimpl.c
  user/ngie/stable-10-libnv/sys/compat/linux/linux_futex.c
  user/ngie/stable-10-libnv/sys/compat/linux/linux_misc.c
  user/ngie/stable-10-libnv/sys/conf/files.amd64
  user/ngie/stable-10-libnv/sys/conf/newvers.sh
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe.c
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe.h
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe_stats.c
  user/ngie/stable-10-libnv/sys/dev/bxe/bxe_stats.h
  user/ngie/stable-10-libnv/sys/dev/bxe/ecore_init.h
  user/ngie/stable-10-libnv/sys/dev/drm2/i915/i915_gem.c
  user/ngie/stable-10-libnv/sys/dev/e1000/if_igb.c
  user/ngie/stable-10-libnv/sys/dev/e1000/if_igb.h
  user/ngie/stable-10-libnv/sys/dev/hwpmc/hwpmc_mod.c
  user/ngie/stable-10-libnv/sys/dev/hyperv/include/hyperv.h
  user/ngie/stable-10-libnv/sys/dev/hyperv/vmbus/hv_channel_mgmt.c
  user/ngie/stable-10-libnv/sys/dev/hyperv/vmbus/hv_vmbus_drv_freebsd.c
  user/ngie/stable-10-libnv/sys/dev/hyperv/vmbus/hv_vmbus_priv.h
  user/ngie/stable-10-libnv/sys/dev/ixgbe/if_ix.c
  user/ngie/stable-10-libnv/sys/dev/ixgbe/if_ixv.c
  user/ngie/stable-10-libnv/sys/dev/ixgbe/ix_txrx.c
  user/ngie/stable-10-libnv/sys/dev/ixgbe/ixgbe.h
  user/ngie/stable-10-libnv/sys/dev/ixgbe/ixgbe_mbx.h
  user/ngie/stable-10-libnv/sys/dev/ixgbe/ixgbe_vf.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/ef10_tlv_layout.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efsys.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_bootcfg.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_check.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_crc32.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_ev.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_filter.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_hash.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_impl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_intr.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_mac.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_mcdi.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_mcdi.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_mon.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_nic.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_nvram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_phy.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_port.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_regs_ef10.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_regs_mcdi.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_rx.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_sram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_tx.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_types.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_vpd.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/efx_wol.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_ev.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_filter.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_impl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_intr.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_mac.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_mcdi.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_nic.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_nvram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_phy.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_rx.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_sram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_tx.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/hunt_vpd.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/mcdi_mon.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/mcdi_mon.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_flash.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_impl.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_mac.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_mcdi.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_nic.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_nvram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_phy.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_sram.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/common/siena_vpd.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/sfxge.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/sfxge.h
  user/ngie/stable-10-libnv/sys/dev/sfxge/sfxge_mcdi.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/sfxge_tx.c
  user/ngie/stable-10-libnv/sys/dev/sfxge/sfxge_tx.h
  user/ngie/stable-10-libnv/sys/fs/ext2fs/ext2_vfsops.c
  user/ngie/stable-10-libnv/sys/i386/linux/syscalls.master
  user/ngie/stable-10-libnv/sys/kern/kern_ktr.c
  user/ngie/stable-10-libnv/sys/kern/kern_prot.c
  user/ngie/stable-10-libnv/sys/modules/if_gif/Makefile
  user/ngie/stable-10-libnv/sys/modules/sfxge/Makefile
  user/ngie/stable-10-libnv/sys/netinet/tcp_output.c
  user/ngie/stable-10-libnv/sys/netinet6/sctp6_usrreq.c
  user/ngie/stable-10-libnv/sys/sparc64/include/ktr.h
  user/ngie/stable-10-libnv/sys/sparc64/sparc64/exception.S
  user/ngie/stable-10-libnv/sys/sparc64/sparc64/mp_exception.S
  user/ngie/stable-10-libnv/sys/sparc64/sparc64/pmap.c
  user/ngie/stable-10-libnv/sys/sparc64/sparc64/swtch.S
  user/ngie/stable-10-libnv/sys/sys/pmc.h
  user/ngie/stable-10-libnv/sys/sys/ucred.h
  user/ngie/stable-10-libnv/tools/build/mk/OptionalObsoleteFiles.inc
  user/ngie/stable-10-libnv/tools/regression/geom_concat/conf.sh
  user/ngie/stable-10-libnv/tools/regression/geom_mirror/conf.sh
  user/ngie/stable-10-libnv/tools/regression/geom_raid3/conf.sh
  user/ngie/stable-10-libnv/tools/regression/geom_shsec/conf.sh
  user/ngie/stable-10-libnv/tools/regression/geom_stripe/conf.sh
  user/ngie/stable-10-libnv/tools/regression/geom_subr.sh
  user/ngie/stable-10-libnv/usr.bin/cap_mkdb/cap_mkdb.c
  user/ngie/stable-10-libnv/usr.bin/clang/clang/Makefile
  user/ngie/stable-10-libnv/usr.bin/truss/syscall.h
  user/ngie/stable-10-libnv/usr.bin/truss/syscalls.c
  user/ngie/stable-10-libnv/usr.sbin/pmcstat/pmcpl_gprof.c
  user/ngie/stable-10-libnv/usr.sbin/pmcstat/pmcstat.8
  user/ngie/stable-10-libnv/usr.sbin/pmcstat/pmcstat.c
  user/ngie/stable-10-libnv/usr.sbin/pmcstat/pmcstat.h
  user/ngie/stable-10-libnv/usr.sbin/services_mkdb/services_mkdb.c
  user/ngie/stable-10-libnv/usr.sbin/sesutil/Makefile
  user/ngie/stable-10-libnv/usr.sbin/sesutil/sesutil.8
  user/ngie/stable-10-libnv/usr.sbin/sesutil/sesutil.c
Directory Properties:
  user/ngie/stable-10-libnv/   (props changed)

Modified: user/ngie/stable-10-libnv/Makefile
==============================================================================
--- user/ngie/stable-10-libnv/Makefile	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/Makefile	Fri Jan 15 02:58:20 2016	(r294069)
@@ -203,7 +203,7 @@ _TARGET_ARCH?=	${MACHINE_ARCH}
 # The user can define ALWAYS_CHECK_MAKE to have this check performed
 # for all targets.
 #
-.if defined(ALWAYS_CHECK_MAKE)
+.if defined(ALWAYS_CHECK_MAKE) || !defined(.PARSEDIR)
 ${TGTS}: upgrade_checks
 .else
 buildworld: upgrade_checks
@@ -358,7 +358,7 @@ MMAKE=		${MMAKEENV} ${MAKE} \
 		-D_UPGRADING \
 		-DNOMAN -DNO_MAN -DNOSHARED -DNO_SHARED \
 		-DNO_CPU_CFLAGS -DNO_WERROR \
-		DESTDIR= MK_TESTS=no PROGNAME=${MYMAKE:T}
+		DESTDIR= -DNO_TESTS PROGNAME=${MYMAKE:T}
 
 make bmake: .PHONY
 	@echo

Modified: user/ngie/stable-10-libnv/contrib/llvm/tools/clang/tools/driver/driver.cpp
==============================================================================
--- user/ngie/stable-10-libnv/contrib/llvm/tools/clang/tools/driver/driver.cpp	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/contrib/llvm/tools/clang/tools/driver/driver.cpp	Fri Jan 15 02:58:20 2016	(r294069)
@@ -215,14 +215,12 @@ static void ParseProgName(SmallVectorImp
   } suffixes [] = {
     { "clang",     0 },
     { "clang++",   "--driver-mode=g++" },
-    { "clang-CC",  "--driver-mode=g++" },
     { "clang-c++", "--driver-mode=g++" },
     { "clang-cc",  0 },
     { "clang-cpp", "--driver-mode=cpp" },
     { "clang-g++", "--driver-mode=g++" },
     { "clang-gcc", 0 },
     { "clang-cl",  "--driver-mode=cl"  },
-    { "CC",        "--driver-mode=g++" },
     { "cc",        0 },
     { "cpp",       "--driver-mode=cpp" },
     { "cl" ,       "--driver-mode=cl"  },

Modified: user/ngie/stable-10-libnv/crypto/openssh/readconf.c
==============================================================================
--- user/ngie/stable-10-libnv/crypto/openssh/readconf.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/crypto/openssh/readconf.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -1643,7 +1643,7 @@ initialize_options(Options * options)
 	options->tun_remote = -1;
 	options->local_command = NULL;
 	options->permit_local_command = -1;
-	options->use_roaming = -1;
+	options->use_roaming = 0;
 	options->visual_host_key = -1;
 	options->ip_qos_interactive = -1;
 	options->ip_qos_bulk = -1;
@@ -1825,8 +1825,7 @@ fill_default_options(Options * options)
 		options->tun_remote = SSH_TUNID_ANY;
 	if (options->permit_local_command == -1)
 		options->permit_local_command = 0;
-	if (options->use_roaming == -1)
-		options->use_roaming = 1;
+	options->use_roaming = 0;
 	if (options->visual_host_key == -1)
 		options->visual_host_key = 0;
 	if (options->ip_qos_interactive == -1)

Modified: user/ngie/stable-10-libnv/etc/Makefile
==============================================================================
--- user/ngie/stable-10-libnv/etc/Makefile	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/etc/Makefile	Fri Jan 15 02:58:20 2016	(r294069)
@@ -86,10 +86,6 @@ BIN1+= apmd.conf
 BIN1+= auto_master
 .endif
 
-.if ${MK_BSNMP} != "no"
-BIN1+= snmpd.config
-.endif
-
 .if ${MK_FREEBSD_UPDATE} != "no"
 BIN1+= freebsd-update.conf
 .endif
@@ -218,6 +214,11 @@ distribution:
 		${BIN2} ${DESTDIR}/etc; \
 	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \
 		master.passwd nsmb.conf opieaccess ${DESTDIR}/etc;
+.if ${MK_BSNMP} != "no"
+	cd ${.CURDIR}; \
+	    ${INSTALL} -o ${BINOWN} -g ${BINGRP} -m 600 \
+		snmpd.config ${DESTDIR}/etc;
+.endif
 .if ${MK_AT} == "no"
 	sed -i "" -e 's;.*/usr/libexec/atrun;#&;' ${DESTDIR}/etc/crontab
 .endif

Modified: user/ngie/stable-10-libnv/gnu/usr.bin/groff/tmac/mdoc.local.in
==============================================================================
--- user/ngie/stable-10-libnv/gnu/usr.bin/groff/tmac/mdoc.local.in	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/gnu/usr.bin/groff/tmac/mdoc.local.in	Fri Jan 15 02:58:20 2016	(r294069)
@@ -50,7 +50,7 @@
 .ds doc-str-Lb-libstdthreads C11 Threads Library (libstdthreads, \-lstdthreads)
 .
 .\" Default .Os value
-.ds doc-default-operating-system FreeBSD\~10.2
+.ds doc-default-operating-system FreeBSD\~10.3
 .
 .\" FreeBSD releases not found in doc-common
 .ds doc-operating-system-FreeBSD-7.4    7.4
@@ -62,6 +62,7 @@
 .ds doc-operating-system-FreeBSD-10.0   10.0
 .ds doc-operating-system-FreeBSD-10.1   10.1
 .ds doc-operating-system-FreeBSD-10.2   10.2
+.ds doc-operating-system-FreeBSD-10.3   10.3
 .ds doc-operating-system-FreeBSD-11.0   11.0
 .
 .\" Definitions for other *BSDs not (yet) in doc-common

Modified: user/ngie/stable-10-libnv/include/limits.h
==============================================================================
--- user/ngie/stable-10-libnv/include/limits.h	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/include/limits.h	Fri Jan 15 02:58:20 2016	(r294069)
@@ -59,11 +59,13 @@
 #define	_POSIX_TZNAME_MAX	3
 #endif
 
+#if __POSIX_VISIBLE >= 200112
 #define	BC_BASE_MAX		   99	/* max ibase/obase values in bc(1) */
 #define	BC_DIM_MAX		 2048	/* max array elements in bc(1) */
 #define	BC_SCALE_MAX		   99	/* max scale value in bc(1) */
 #define	BC_STRING_MAX		 1000	/* max const string length in bc(1) */
-#define	COLL_WEIGHTS_MAX	    0	/* max weights for order keyword */
+#define	CHARCLASS_NAME_MAX	   14	/* max character class name size */
+#define	COLL_WEIGHTS_MAX	   10	/* max weights for order keyword */
 #define	EXPR_NEST_MAX		   32	/* max expressions nested in expr(1) */
 #define	LINE_MAX		 2048	/* max bytes in an input line */
 #define	RE_DUP_MAX		  255	/* max RE's in interval notation */
@@ -72,11 +74,14 @@
 #define	_POSIX2_BC_DIM_MAX	2048
 #define	_POSIX2_BC_SCALE_MAX	99
 #define	_POSIX2_BC_STRING_MAX	1000
+#define	_POSIX2_CHARCLASS_NAME_MAX 14
+#define	_POSIX2_COLL_WEIGHTS_MAX 2
 #define	_POSIX2_EQUIV_CLASS_MAX	2
 #define	_POSIX2_EXPR_NEST_MAX	32
 #define	_POSIX2_LINE_MAX	2048
 #define	_POSIX2_RE_DUP_MAX	255
 #endif
+#endif
 
 #if __POSIX_VISIBLE >= 199309
 #define	_POSIX_AIO_LISTIO_MAX	2
@@ -110,8 +115,6 @@
 #define	_POSIX_TRACE_SYS_MAX	8
 #define	_POSIX_TRACE_USER_EVENT_MAX 32
 #define	_POSIX_TTY_NAME_MAX	9
-#define	_POSIX2_CHARCLASS_NAME_MAX 14
-#define	_POSIX2_COLL_WEIGHTS_MAX 2
 
 #define	_POSIX_RE_DUP_MAX	_POSIX2_RE_DUP_MAX
 #endif

Modified: user/ngie/stable-10-libnv/lib/clang/clang.build.mk
==============================================================================
--- user/ngie/stable-10-libnv/lib/clang/clang.build.mk	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/lib/clang/clang.build.mk	Fri Jan 15 02:58:20 2016	(r294069)
@@ -27,8 +27,8 @@ TARGET_ABI=	gnueabi
 TARGET_ABI=	unknown
 .endif
 
-TARGET_TRIPLE?=	${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd10.2
-BUILD_TRIPLE?=	${BUILD_ARCH:C/amd64/x86_64/}-unknown-freebsd10.2
+TARGET_TRIPLE?=	${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd10.3
+BUILD_TRIPLE?=	${BUILD_ARCH:C/amd64/x86_64/}-unknown-freebsd10.3
 CFLAGS+=	-DLLVM_DEFAULT_TARGET_TRIPLE=\"${TARGET_TRIPLE}\" \
 		-DLLVM_HOST_TRIPLE=\"${BUILD_TRIPLE}\" \
 		-DDEFAULT_SYSROOT=\"${TOOLS_PREFIX}\"

Modified: user/ngie/stable-10-libnv/lib/libpmc/pmc.h
==============================================================================
--- user/ngie/stable-10-libnv/lib/libpmc/pmc.h	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/lib/libpmc/pmc.h	Fri Jan 15 02:58:20 2016	(r294069)
@@ -36,14 +36,15 @@
  * Driver statistics.
  */
 struct pmc_driverstats {
-	int	pm_intr_ignored;	/* #interrupts ignored */
-	int	pm_intr_processed;	/* #interrupts processed */
-	int	pm_intr_bufferfull;	/* #interrupts with ENOSPC */
-	int	pm_syscalls;		/* #syscalls */
-	int	pm_syscall_errors;	/* #syscalls with errors */
-	int	pm_buffer_requests;	/* #buffer requests */
-	int	pm_buffer_requests_failed; /* #failed buffer requests */
-	int	pm_log_sweeps;		/* #sample buffer processing passes */
+	unsigned int	pm_intr_ignored;	/* #interrupts ignored */
+	unsigned int	pm_intr_processed;	/* #interrupts processed */
+	unsigned int	pm_intr_bufferfull;	/* #interrupts with ENOSPC */
+	unsigned int	pm_syscalls;		/* #syscalls */
+	unsigned int	pm_syscall_errors;	/* #syscalls with errors */
+	unsigned int	pm_buffer_requests;	/* #buffer requests */
+	unsigned int	pm_buffer_requests_failed; /* #failed buffer requests */
+	unsigned int	pm_log_sweeps;		/* #sample buffer processing
+						   passes */
 };
 
 /*

Modified: user/ngie/stable-10-libnv/release/doc/en_US.ISO8859-1/errata/article.xml
==============================================================================
--- user/ngie/stable-10-libnv/release/doc/en_US.ISO8859-1/errata/article.xml	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/release/doc/en_US.ISO8859-1/errata/article.xml	Fri Jan 15 02:58:20 2016	(r294069)
@@ -19,7 +19,7 @@
     <pubdate>$FreeBSD$</pubdate>
 
     <copyright>
-      <year>2015</year>
+      <year>2016</year>
 
       <holder role="mailto:doc at FreeBSD.org">The &os; Documentation
 	Project</holder>

Modified: user/ngie/stable-10-libnv/release/doc/share/xml/errata.xml
==============================================================================
--- user/ngie/stable-10-libnv/release/doc/share/xml/errata.xml	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/release/doc/share/xml/errata.xml	Fri Jan 15 02:58:20 2016	(r294069)
@@ -89,6 +89,29 @@
 	<entry><para>Applications exiting due to segmentation
 	    violation on a correct memory address.</para></entry>
       </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-16:01.filemon.asc">FreeBSD-EN-16:01.filemon</link></entry>
+	<entry>14 January 2016</entry>
+	<entry><para><application>bmake</application> and
+	    &man.filemon.4; stability issues.</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-16:02.pf.asc">FreeBSD-EN-16:02.pf</link></entry>
+	<entry>14 January 2016</entry>
+	<entry><para>Invalid TCP checksum issue.</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-EN-16:03.yplib.asc">FreeBSD-EN-16:03.yplib</link></entry>
+	<entry>14 January 2016</entry>
+	<entry><para><application>YP/NIS</application> library
+	    bug.</para></entry>
+      </row>
     </tbody>
   </tgroup>
 </informaltable>

Modified: user/ngie/stable-10-libnv/release/doc/share/xml/security.xml
==============================================================================
--- user/ngie/stable-10-libnv/release/doc/share/xml/security.xml	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/release/doc/share/xml/security.xml	Fri Jan 15 02:58:20 2016	(r294069)
@@ -53,6 +53,52 @@
 	<entry>5 December 2015</entry>
 	<entry><para>Multiple vulnerabilities</para></entry>
       </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:01.sctp.asc">FreeBSD-SA-16:01.sctp</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>ICMPv6 error message vulnerability</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:02.ntp.asc">FreeBSD-SA-16:02.ntp</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>Panic threshold bypass
+	    vulnerability</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:03.linux.asc">FreeBSD-SA-16:03.linux</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>Incorrect <literal>futex</literal>
+	    handling</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:04.linux.asc">FreeBSD-SA-16:04.linux</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>&man.setgroups.2; system call
+	    vulnerability</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:05.tcp.asc">FreeBSD-SA-16:05.tcp</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>MD5 signature denial of service</para></entry>
+      </row>
+
+      <row>
+	<entry><link
+	    xlink:href="&security.url;/FreeBSD-SA-16:06.bsnmpd.asc">FreeBSD-SA-16:06.bsnmpd</link></entry>
+	<entry>15 January 2016</entry>
+	<entry><para>Insecure default configuration file
+	  permissions</para></entry>
+      </row>
     </tbody>
   </tgroup>
 </informaltable>

Modified: user/ngie/stable-10-libnv/release/release.sh
==============================================================================
--- user/ngie/stable-10-libnv/release/release.sh	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/release/release.sh	Fri Jan 15 02:58:20 2016	(r294069)
@@ -275,6 +275,7 @@ extra_chroot_setup() {
 			PBUILD_FLAGS="${PBUILD_FLAGS} OSREL=${REVISION}"
 			chroot ${CHROOTDIR} make -C /usr/ports/textproc/docproj \
 				${PBUILD_FLAGS} OPTIONS_UNSET="FOP IGOR" \
+				FORCE_PKG_REGISTER=1 \
 				install clean distclean
 		fi
 	fi

Modified: user/ngie/stable-10-libnv/share/man/man4/sfxge.4
==============================================================================
--- user/ngie/stable-10-libnv/share/man/man4/sfxge.4	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/share/man/man4/sfxge.4	Fri Jan 15 02:58:20 2016	(r294069)
@@ -148,6 +148,14 @@ Number of packets with payload that must
 before a connection is eligible for LRO.
 The idea is we should avoid coalescing segments when the sender is recovering
 from loss, because reducing the ACK rate can damage performance.
+.It Va hw.sfxge.mcdi_logging
+Enable logging of MCDI protocol messages  (only available if enabled at compile-time).
+.It Va hw.sfxge.N.mcdi_logging
+Enable or disable logging of MCDI protocol messages on a per-port basis. The default for each
+port will be the value of
+.Va hw.sfxge.mcdi_logging.
+The logging may also be enabled or disabled after the driver is loaded using the sysctl
+.Va dev.sfxge.%d.mcdi_logging.
 .El
 .Sh SUPPORT
 For general information and support,

Modified: user/ngie/stable-10-libnv/share/mk/local.sys.mk
==============================================================================
--- user/ngie/stable-10-libnv/share/mk/local.sys.mk	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/share/mk/local.sys.mk	Fri Jan 15 02:58:20 2016	(r294069)
@@ -3,7 +3,7 @@
 .if defined(.PARSEDIR)
 SRCTOP:= ${.PARSEDIR:tA:H:H}
 .else
-SRCTOP:= ${.MAKE.MAKEFILES:M*/local.sys.mk:H:H:H}
+SRCTOP:= ${.MAKEFILE_LIST:M*/local.sys.mk:H:H:H}
 .endif
 
 .if ${.CURDIR} == ${SRCTOP}

Modified: user/ngie/stable-10-libnv/share/mk/sys.mk
==============================================================================
--- user/ngie/stable-10-libnv/share/mk/sys.mk	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/share/mk/sys.mk	Fri Jan 15 02:58:20 2016	(r294069)
@@ -144,6 +144,8 @@ OBJCFLAGS	?=	${OBJCINCLUDES} ${CFLAGS} -
 
 OBJCOPY		?=	objcopy
 
+OBJDUMP		?=	objdump
+
 PC		?=	pc
 PFLAGS		?=
 

Modified: user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_proto.h
==============================================================================
--- user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_proto.h	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_proto.h	Fri Jan 15 02:58:20 2016	(r294069)
@@ -1023,7 +1023,7 @@ struct linux_set_robust_list_args {
 };
 struct linux_get_robust_list_args {
 	char pid_l_[PADL_(l_int)]; l_int pid; char pid_r_[PADR_(l_int)];
-	char head_l_[PADL_(struct linux_robust_list_head *)]; struct linux_robust_list_head * head; char head_r_[PADR_(struct linux_robust_list_head *)];
+	char head_l_[PADL_(struct linux_robust_list_head **)]; struct linux_robust_list_head ** head; char head_r_[PADR_(struct linux_robust_list_head **)];
 	char len_l_[PADL_(l_size_t *)]; l_size_t * len; char len_r_[PADR_(l_size_t *)];
 };
 struct linux_splice_args {

Modified: user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_systrace_args.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_systrace_args.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/amd64/linux32/linux32_systrace_args.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -2122,7 +2122,7 @@ systrace_args(int sysnum, void *params, 
 	case 312: {
 		struct linux_get_robust_list_args *p = params;
 		iarg[0] = p->pid; /* l_int */
-		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head * */
+		uarg[1] = (intptr_t) p->head; /* struct linux_robust_list_head ** */
 		uarg[2] = (intptr_t) p->len; /* l_size_t * */
 		*n_args = 3;
 		break;
@@ -5551,7 +5551,7 @@ systrace_entry_setargdesc(int sysnum, in
 			p = "l_int";
 			break;
 		case 1:
-			p = "struct linux_robust_list_head *";
+			p = "struct linux_robust_list_head **";
 			break;
 		case 2:
 			p = "l_size_t *";

Modified: user/ngie/stable-10-libnv/sys/amd64/linux32/syscalls.master
==============================================================================
--- user/ngie/stable-10-libnv/sys/amd64/linux32/syscalls.master	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/amd64/linux32/syscalls.master	Fri Jan 15 02:58:20 2016	(r294069)
@@ -520,8 +520,8 @@
 ; linux 2.6.17:
 311	AUE_NULL	STD	{ int linux_set_robust_list(struct linux_robust_list_head *head, \
 					l_size_t len); }
-312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, struct linux_robust_list_head *head, \
-					l_size_t *len); }
+312	AUE_NULL	STD	{ int linux_get_robust_list(l_int pid, \
+				    struct linux_robust_list_head **head, l_size_t *len); }
 313	AUE_NULL	STD	{ int linux_splice(void); }
 314	AUE_NULL	STD	{ int linux_sync_file_range(void); }
 315	AUE_NULL	STD	{ int linux_tee(void); }

Modified: user/ngie/stable-10-libnv/sys/boot/forth/loader.conf
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/forth/loader.conf	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/forth/loader.conf	Fri Jan 15 02:58:20 2016	(r294069)
@@ -73,6 +73,7 @@ entropy_cache_type="/boot/entropy"	
 #password=""			# Prevent changes to boot options
 #bootlock_password=""		# Prevent booting (see check-password.4th(8))
 #geom_eli_passphrase_prompt="NO" # Prompt for geli(8) passphrase to mount root
+bootenv_autolist="YES"		# Auto populate the list of ZFS Boot Environments
 #beastie_disable="NO"		# Turn the beastie boot menu on and off
 #kernels="kernel kernel.old"	# Kernels to display in the boot menu
 #loader_logo="orbbw"		# Desired logo: orbbw, orb, fbsdbw, beastiebw, beastie, none

Modified: user/ngie/stable-10-libnv/sys/boot/forth/menu-commands.4th
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/forth/menu-commands.4th	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/forth/menu-commands.4th	Fri Jan 15 02:58:20 2016	(r294069)
@@ -351,4 +351,68 @@ also menu-namespace also menu-command-he
 	2 goto_menu
 ;
 
+\ 
+\ Set boot environment defaults
+\ 
+
+: init_bootenv ( -- )
+	s" set menu_caption[1]=${bemenu_current}${vfs.root.mountfrom}" evaluate
+	s" set ansi_caption[1]=${beansi_current}${vfs.root.mountfrom}" evaluate
+	s" set menu_caption[2]=${bemenu_bootfs}${zfs_be_active}" evaluate
+	s" set ansi_caption[2]=${beansi_bootfs}${zfs_be_active}" evaluate
+	s" set menu_caption[3]=${bemenu_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
+	s" set ansi_caption[3]=${beansi_page}${zfs_be_currpage}${bemenu_pageof}${zfs_be_pages}" evaluate
+;
+
+\
+\ Redraw the entire screen. A long BE name can corrupt the menu
+\ 
+
+: be_draw_screen
+	clear		\ Clear the screen (in screen.4th)
+	print_version	\ print version string (bottom-right; see version.4th)
+	draw-beastie	\ Draw FreeBSD logo at right (in beastie.4th)
+	draw-brand	\ Draw brand.4th logo at top (in brand.4th)
+	menu-init	\ Initialize menu and draw bounding box (in menu.4th)
+;
+
+\
+\ Select a boot environment
+\ 
+
+: set_bootenv ( N -- N TRUE )
+	dup s" set vfs.root.mountfrom=${bootenv_root[E]}" 38 +c! evaluate
+	s" set currdev=${vfs.root.mountfrom}:" evaluate
+	s" unload" evaluate
+	free-module-options
+	s" /boot/defaults/loader.conf" read-conf
+	s" /boot/loader.conf" read-conf
+	s" /boot/loader.conf.local" read-conf
+	init_bootenv
+	be_draw_screen
+	menu-redraw
+	TRUE
+;
+
+\
+\ Switch to the next page of boot environments
+\
+
+: set_be_page ( N -- N TRUE )
+	s" zfs_be_currpage" getenv dup -1 = if
+		drop s" 1"
+	else
+		0 s>d 2swap
+		>number ( ud caddr/u -- ud' caddr'/u' )	\ convert string to numbers
+		2drop					\ drop the string
+		1 um/mod ( ud u1 -- u2 u3 ) 		\ convert double ud' to single u3' and remainder u2
+		swap drop ( ud2 u3 -- u3 )		\ drop the remainder u2
+		1+					\ increment the page number
+		s>d <# #s #>				\ convert back to a string
+	then
+	s" zfs_be_currpage" setenv
+	s" reloadbe" evaluate
+	3 goto_menu
+;
+
 only forth definitions

Modified: user/ngie/stable-10-libnv/sys/boot/forth/menu.rc
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/forth/menu.rc	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/forth/menu.rc	Fri Jan 15 02:58:20 2016	(r294069)
@@ -68,6 +68,13 @@ set mainmenu_command[6]="2 goto_menu"
 set mainmenu_keycode[6]=111
 set mainansi_caption[6]="Configure Boot ^[1mO^[mptions..."
 
+s" currdev" getenv dup 0> [if] drop 4 s" zfs:" compare 0= [if]
+    set mainmenu_caption[7]="Select Boot [E]nvironment..."
+    set mainmenu_command[7]="3 goto_menu"
+    set mainmenu_keycode[7]=101
+    set mainansi_caption[7]="Select Boot ^[1mE^[37mnvironment..."
+[then] [else] drop [then]
+
 \ 
 \ BOOT OPTIONS MENU
 \ 
@@ -119,6 +126,37 @@ set optionsmenu_keycode[6]=118
 set optionsansi_caption[6]="^[1mV^[merbose..... ^[34;1mOff^[m"
 set optionstoggled_ansi[6]="^[1mV^[merbose..... ^[32;7mOn^[m"
 
+\ 
+\ BOOT ENVIRONMENT MENU
+\ 
+
+set menuset_name3="bootenv"
+
+set bemenu_current="Active: "
+set beansi_current="^[1m${bemenu_current}^[m"
+set bemenu_bootfs="bootfs: "
+set beansi_bootfs="^[1m${bemenu_bootfs}^[m"
+set bemenu_page="[P]age: "
+set beansi_page="^[1mP^[mage: "
+set bemenu_pageof=" of "
+set beansi_pageof="${bemenu_pageof}"
+set zfs_be_currpage=1
+
+set bootenvmenu_init="init_bootenv"
+
+set bootenvmenu_command[1]="be_draw_screen 1 goto_menu"
+set bootenvmenu_keycode[1]=8
+
+set bootenvmenu_command[2]="set_bootenv"
+set bootenvmenu_keycode[2]=97
+set bootenv_root[2]="${zfs_be_active}"
+
+set bootenvmenu_command[3]="set_be_page"
+set bootenvmenu_keycode[3]=112
+
+set bootenvmenu_options=4
+set bootenvmenu_optionstext="Boot Environments:"
+
 \ Enable automatic booting (add ``autoboot_delay=N'' to loader.conf(5) to
 \ customize the timeout; default is 10-seconds)
 \ 
@@ -128,6 +166,21 @@ set menu_timeout_command="boot"
 \ 
 try-include /boot/menu.rc.local
 
+\ Initialize boot environment variables
+\
+s" reloadbe" sfind ( xt|0 bool ) [if]
+    s" bootenv_autolist" getenv dup -1 = [if]
+	drop s" execute" evaluate		\ Use evaluate to avoid passing
+						\ reloadbe an optional parameter
+    [else]
+	s" YES" compare-insensitive 0= [if]
+	    s" execute" evaluate
+	[then]
+    [then]
+[else]
+    drop ( xt=0 )
+[then]
+
 \ Display the main menu (see `menu.4th')
 set menuset_initial=1
 menuset-loadinitial

Modified: user/ngie/stable-10-libnv/sys/boot/forth/support.4th
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/forth/support.4th	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/forth/support.4th	Fri Jan 15 02:58:20 2016	(r294069)
@@ -930,6 +930,30 @@ only forth definitions also support-func
   repeat
 ;
 
+: free-one-module { addr -- addr }
+  addr module.name strfree
+  addr module.loadname strfree
+  addr module.type strfree
+  addr module.args strfree
+  addr module.beforeload strfree
+  addr module.afterload strfree
+  addr module.loaderror strfree
+  addr
+;
+
+: free-module-options
+  module_options @
+  begin
+    ?dup
+  while
+    free-one-module
+    dup module.next @
+    swap free-memory
+  repeat
+  0 module_options !
+  0 last_module_option !
+;
+
 only forth also support-functions definitions
 
 \ Variables used for processing multiple conf files

Modified: user/ngie/stable-10-libnv/sys/boot/i386/loader/main.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/i386/loader/main.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/i386/loader/main.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -69,6 +69,7 @@ static int		isa_inb(int port);
 static void		isa_outb(int port, int value);
 void			exit(int code);
 #ifdef LOADER_ZFS_SUPPORT
+static void		init_zfs_bootenv(char *currdev);
 static void		i386_zfs_probe(void);
 #endif
 
@@ -291,12 +292,45 @@ extract_currdev(void)
 	new_currdev.d_unit = 0;
     }
 
+#ifdef LOADER_ZFS_SUPPORT
+    if (new_currdev.d_type == DEVT_ZFS)
+	init_zfs_bootenv(zfs_fmtdev(&new_currdev));
+#endif
+
     env_setenv("currdev", EV_VOLATILE, i386_fmtdev(&new_currdev),
 	       i386_setcurrdev, env_nounset);
     env_setenv("loaddev", EV_VOLATILE, i386_fmtdev(&new_currdev), env_noset,
 	       env_nounset);
 }
 
+#ifdef LOADER_ZFS_SUPPORT
+static void
+init_zfs_bootenv(char *currdev)
+{
+	char *beroot;
+
+	if (strlen(currdev) == 0)
+		return;
+	if(strncmp(currdev, "zfs:", 4) != 0)
+		return;
+	/* Remove the trailing : */
+	currdev[strlen(currdev) - 1] = '\0';
+	setenv("zfs_be_active", currdev, 1);
+	setenv("zfs_be_currpage", "1", 1);
+	/* Do not overwrite if already set */
+	setenv("vfs.root.mountfrom", currdev, 0);
+	/* Forward past zfs: */
+	currdev = strchr(currdev, ':');
+	currdev++;
+	/* Remove the last element (current bootenv) */
+	beroot = strrchr(currdev, '/');
+	if (beroot != NULL)
+		beroot[0] = '\0';
+	beroot = currdev;
+	setenv("zfs_be_root", beroot, 1);
+}
+#endif
+
 COMMAND_SET(reboot, "reboot", "reboot the system", command_reboot);
 
 static int
@@ -350,6 +384,40 @@ command_lszfs(int argc, char *argv[])
 	command_errmsg = strerror(err);
 	return (CMD_ERROR);
     }
+
+    return (CMD_OK);
+}
+
+COMMAND_SET(reloadbe, "reloadbe", "refresh the list of ZFS Boot Environments",
+    command_reloadbe);
+
+static int
+command_reloadbe(int argc, char *argv[])
+{
+    int err;
+    char *root;
+
+    if (argc > 2) {
+	command_errmsg = "wrong number of arguments";
+	return (CMD_ERROR);
+    }
+
+    if (argc == 2) {
+	err = zfs_bootenv(argv[1]);
+    } else {
+	root = getenv("zfs_be_root");
+	if (root == NULL) {
+	    /* There does not appear to be a ZFS pool here, exit without error */
+	    return (CMD_OK);
+	}
+	err = zfs_bootenv(getenv("zfs_be_root"));
+    }
+
+    if (err != 0) {
+	command_errmsg = strerror(err);
+	return (CMD_ERROR);
+    }
+
     return (CMD_OK);
 }
 #endif

Modified: user/ngie/stable-10-libnv/sys/boot/userboot/userboot/main.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/userboot/userboot/main.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/userboot/userboot/main.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$");
 
 static void userboot_zfs_probe(void);
 static int userboot_zfs_found;
+static void init_zfs_bootenv(char *currdev);
 #endif
 
 #define	USERBOOT_VERSION	USERBOOT_VERSION_3
@@ -167,6 +168,7 @@ extract_currdev(void)
 		zdev.d_type = zdev.d_dev->dv_type;
 		
 		dev = *(struct disk_devdesc *)&zdev;
+		init_zfs_bootenv(zfs_fmtdev(&dev));
 	} else
 #endif
 
@@ -198,6 +200,32 @@ extract_currdev(void)
 
 #if defined(USERBOOT_ZFS_SUPPORT)
 static void
+init_zfs_bootenv(char *currdev)
+{
+	char *beroot;
+
+	if (strlen(currdev) == 0)
+		return;
+	if(strncmp(currdev, "zfs:", 4) != 0)
+		return;
+	/* Remove the trailing : */
+	currdev[strlen(currdev) - 1] = '\0';
+	setenv("zfs_be_active", currdev, 1);
+	setenv("zfs_be_currpage", "1", 1);
+	/* Do not overwrite if already set */
+	setenv("vfs.root.mountfrom", currdev, 0);
+	/* Forward past zfs: */
+	currdev = strchr(currdev, ':');
+	currdev++;
+	/* Remove the last element (current bootenv) */
+	beroot = strrchr(currdev, '/');
+	if (beroot != NULL)
+		beroot[0] = '\0';
+	beroot = currdev;
+	setenv("zfs_be_root", beroot, 1);
+}
+
+static void
 userboot_zfs_probe(void)
 {
 	char devname[32];
@@ -237,6 +265,38 @@ command_lszfs(int argc, char *argv[])
 	}
 	return (CMD_OK);
 }
+
+COMMAND_SET(reloadbe, "reloadbe", "refresh the list of ZFS Boot Environments",
+	    command_reloadbe);
+
+static int
+command_reloadbe(int argc, char *argv[])
+{
+	int err;
+	char *root;
+
+	if (argc > 2) {
+		command_errmsg = "wrong number of arguments";
+		return (CMD_ERROR);
+	}
+
+	if (argc == 2) {
+		err = zfs_bootenv(argv[1]);
+	} else {
+		root = getenv("zfs_be_root");
+		if (root == NULL) {
+			return (CMD_OK);
+		}
+		err = zfs_bootenv(root);
+	}
+
+	if (err != 0) {
+		command_errmsg = strerror(err);
+		return (CMD_ERROR);
+	}
+
+	return (CMD_OK);
+}
 #endif /* USERBOOT_ZFS_SUPPORT */
 
 COMMAND_SET(quit, "quit", "exit the loader", command_quit);

Modified: user/ngie/stable-10-libnv/sys/boot/zfs/libzfs.h
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/zfs/libzfs.h	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/zfs/libzfs.h	Fri Jan 15 02:58:20 2016	(r294069)
@@ -62,6 +62,9 @@ int	zfs_parsedev(struct zfs_devdesc *dev
 char	*zfs_fmtdev(void *vdev);
 int	zfs_probe_dev(const char *devname, uint64_t *pool_guid);
 int	zfs_list(const char *name);
+int	zfs_bootenv(const char *name);
+int	zfs_belist_add(const char *name);
+int	zfs_set_env(void);
 
 extern struct devsw zfs_dev;
 extern struct fs_ops zfs_fsops;

Modified: user/ngie/stable-10-libnv/sys/boot/zfs/zfs.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/zfs/zfs.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/zfs/zfs.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -48,6 +48,10 @@ __FBSDID("$FreeBSD$");
 
 #include "zfsimpl.c"
 
+/* Define the range of indexes to be populated with ZFS Boot Environments */
+#define		ZFS_BE_FIRST	4
+#define		ZFS_BE_LAST	8
+
 static int	zfs_open(const char *path, struct open_file *f);
 static int	zfs_write(struct open_file *f, void *buf, size_t size, size_t *resid);
 static int	zfs_close(struct open_file *f);
@@ -80,6 +84,16 @@ struct file {
 	zap_leaf_phys_t	*f_zap_leaf;	/* zap leaf buffer */
 };
 
+static int	zfs_env_index;
+static int	zfs_env_count;
+
+SLIST_HEAD(zfs_be_list, zfs_be_entry) zfs_be_head = SLIST_HEAD_INITIALIZER(zfs_be_head);
+struct zfs_be_list *zfs_be_headp;
+struct zfs_be_entry {
+	const char *name;
+	SLIST_ENTRY(zfs_be_entry) entries;
+} *zfs_be, *zfs_be_tmp;
+
 /*
  * Open a file.
  */
@@ -691,6 +705,161 @@ zfs_list(const char *name)
 	rv = zfs_lookup_dataset(spa, dsname, &objid);
 	if (rv != 0)
 		return (rv);
-	rv = zfs_list_dataset(spa, objid);
+
+	return (zfs_list_dataset(spa, objid));
+}
+
+int
+zfs_bootenv(const char *name)
+{
+	static char	poolname[ZFS_MAXNAMELEN], *dsname, *root;
+	char		becount[4];
+	uint64_t	objid;
+	spa_t		*spa;
+	int		len, rv, pages, perpage, currpage;
+
+	if (name == NULL)
+		return (EINVAL);
+	if ((root = getenv("zfs_be_root")) == NULL)
+		return (EINVAL);
+
+	if (strcmp(name, root) != 0) {
+		if (setenv("zfs_be_root", name, 1) != 0)
+			return (ENOMEM);
+	}
+
+	SLIST_INIT(&zfs_be_head);
+	zfs_env_count = 0;
+	len = strlen(name);
+	dsname = strchr(name, '/');
+	if (dsname != NULL) {
+		len = dsname - name;
+		dsname++;
+	} else
+		dsname = "";
+	memcpy(poolname, name, len);
+	poolname[len] = '\0';
+
+	spa = spa_find_by_name(poolname);
+	if (!spa)
+		return (ENXIO);
+	rv = zfs_lookup_dataset(spa, dsname, &objid);
+	if (rv != 0)
+		return (rv);
+	rv = zfs_callback_dataset(spa, objid, zfs_belist_add);
+
+	/* Calculate and store the number of pages of BEs */
+	perpage = (ZFS_BE_LAST - ZFS_BE_FIRST + 1);
+	pages = (zfs_env_count / perpage) + ((zfs_env_count % perpage) > 0 ? 1 : 0);
+	snprintf(becount, 4, "%d", pages);
+	if (setenv("zfs_be_pages", becount, 1) != 0)
+		return (ENOMEM);
+
+	/* Roll over the page counter if it has exceeded the maximum */
+	currpage = strtol(getenv("zfs_be_currpage"), NULL, 10);
+	if (currpage > pages) {
+		if (setenv("zfs_be_currpage", "1", 1) != 0)
+			return (ENOMEM);
+	}
+
+	/* Populate the menu environment variables */
+	zfs_set_env();
+
+	/* Clean up the SLIST of ZFS BEs */
+	while (!SLIST_EMPTY(&zfs_be_head)) {
+		zfs_be = SLIST_FIRST(&zfs_be_head);
+		SLIST_REMOVE_HEAD(&zfs_be_head, entries);
+		free(zfs_be);
+	}
+
 	return (rv);
 }
+
+int
+zfs_belist_add(const char *name)
+{
+
+	/* Add the boot environment to the head of the SLIST */
+	zfs_be = malloc(sizeof(struct zfs_be_entry));
+	zfs_be->name = name;
+	SLIST_INSERT_HEAD(&zfs_be_head, zfs_be, entries);
+	zfs_env_count++;
+
+	return (0);
+}
+
+int
+zfs_set_env(void)
+{
+	char envname[32], envval[256];
+	char *beroot, *pagenum;
+	int rv, page, ctr;
+
+	beroot = getenv("zfs_be_root");
+	if (beroot == NULL) {
+		return (1);
+	}
+
+	pagenum = getenv("zfs_be_currpage");
+	if (pagenum != NULL) {
+		page = strtol(pagenum, NULL, 10);
+	} else {
+		page = 1;
+	}
+
+	ctr = 1;
+	rv = 0;
+	zfs_env_index = ZFS_BE_FIRST;
+	SLIST_FOREACH_SAFE(zfs_be, &zfs_be_head, entries, zfs_be_tmp) {
+		/* Skip to the requested page number */
+		if (ctr <= ((ZFS_BE_LAST - ZFS_BE_FIRST + 1) * (page - 1))) {
+			ctr++;
+			continue;
+		}
+		
+		snprintf(envname, sizeof(envname), "bootenvmenu_caption[%d]", zfs_env_index);
+		snprintf(envval, sizeof(envval), "%s", zfs_be->name);
+		rv = setenv(envname, envval, 1);
+		if (rv != 0) {
+			break;
+		}
+
+		snprintf(envname, sizeof(envname), "bootenvansi_caption[%d]", zfs_env_index);
+		rv = setenv(envname, envval, 1);
+		if (rv != 0){
+			break;
+		}
+
+		snprintf(envname, sizeof(envname), "bootenvmenu_command[%d]", zfs_env_index);
+		rv = setenv(envname, "set_bootenv", 1);
+		if (rv != 0){
+			break;
+		}
+
+		snprintf(envname, sizeof(envname), "bootenv_root[%d]", zfs_env_index);
+		snprintf(envval, sizeof(envval), "zfs:%s/%s", beroot, zfs_be->name);
+		rv = setenv(envname, envval, 1);
+		if (rv != 0){
+			break;
+		}
+
+		zfs_env_index++;
+		if (zfs_env_index > ZFS_BE_LAST) {
+			break;
+		}
+
+	}
+	
+	for (; zfs_env_index <= ZFS_BE_LAST; zfs_env_index++) {
+		snprintf(envname, sizeof(envname), "bootenvmenu_caption[%d]", zfs_env_index);
+		(void)unsetenv(envname);
+		snprintf(envname, sizeof(envname), "bootenvansi_caption[%d]", zfs_env_index);
+		(void)unsetenv(envname);
+		snprintf(envname, sizeof(envname), "bootenvmenu_command[%d]", zfs_env_index);
+		(void)unsetenv(envname);
+		snprintf(envname, sizeof(envname), "bootenv_root[%d]", zfs_env_index);
+		(void)unsetenv(envname);
+	}
+
+	return (rv);
+}
\ No newline at end of file

Modified: user/ngie/stable-10-libnv/sys/boot/zfs/zfsimpl.c
==============================================================================
--- user/ngie/stable-10-libnv/sys/boot/zfs/zfsimpl.c	Fri Jan 15 02:33:47 2016	(r294068)
+++ user/ngie/stable-10-libnv/sys/boot/zfs/zfsimpl.c	Fri Jan 15 02:58:20 2016	(r294069)
@@ -1473,7 +1473,7 @@ zap_lookup(const spa_t *spa, const dnode
  * the directory contents.
  */
 static int
-mzap_list(const dnode_phys_t *dnode)
+mzap_list(const dnode_phys_t *dnode, int (*callback)(const char *))
 {
 	const mzap_phys_t *mz;
 	const mzap_ent_phys_t *mze;
@@ -1492,7 +1492,7 @@ mzap_list(const dnode_phys_t *dnode)
 		mze = &mz->mz_chunk[i];
 		if (mze->mze_name[0])
 			//printf("%-32s 0x%jx\n", mze->mze_name, (uintmax_t)mze->mze_value);
-			printf("%s\n", mze->mze_name);
+			callback(mze->mze_name);
 	}
 
 	return (0);
@@ -1503,7 +1503,7 @@ mzap_list(const dnode_phys_t *dnode)
  * the directory header.
  */
 static int
-fzap_list(const spa_t *spa, const dnode_phys_t *dnode)
+fzap_list(const spa_t *spa, const dnode_phys_t *dnode, int (*callback)(const char *))
 {
 	int bsize = dnode->dn_datablkszsec << SPA_MINBLOCKSHIFT;
 	zap_phys_t zh = *(zap_phys_t *) zap_scratch;
@@ -1566,13 +1566,21 @@ fzap_list(const spa_t *spa, const dnode_
 			value = fzap_leaf_value(&zl, zc);
 
 			//printf("%s 0x%jx\n", name, (uintmax_t)value);
-			printf("%s\n", name);
+			callback((const char *)name);
 		}
 	}
 
 	return (0);
 }
 
+static int zfs_printf(const char *name)
+{
+

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***


More information about the svn-src-user mailing list