Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 10 Nov 2014 18:48:00 +0000 (UTC)
From:      Gleb Smirnoff <glebius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r274350 - in projects/ifnet: . cddl/contrib/opensolaris/cmd/zdb cddl/contrib/opensolaris/cmd/zfs cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/zstreamdump cddl/contrib...
Message-ID:  <201411101848.sAAIm01g015720@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: glebius
Date: Mon Nov 10 18:47:59 2014
New Revision: 274350
URL: https://svnweb.freebsd.org/changeset/base/274350

Log:
  Merge head r256150 through r274349.

Deleted:
  projects/ifnet/etc/rc.d/faith
  projects/ifnet/share/man/man4/faith.4
  projects/ifnet/sys/modules/if_faith/
  projects/ifnet/sys/net/if_faith.c
  projects/ifnet/usr.sbin/faithd/
Modified:
  projects/ifnet/ObsoleteFiles.inc
  projects/ifnet/UPDATING
  projects/ifnet/cddl/contrib/opensolaris/cmd/zdb/zdb.c
  projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs.8
  projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
  projects/ifnet/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7
  projects/ifnet/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c
  projects/ifnet/cddl/contrib/opensolaris/cmd/ztest/ztest.c
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h
  projects/ifnet/etc/defaults/rc.conf
  projects/ifnet/etc/network.subr
  projects/ifnet/etc/rc.d/Makefile
  projects/ifnet/etc/rc.d/NETWORKING
  projects/ifnet/etc/rc.d/bridge
  projects/ifnet/etc/rc.d/defaultroute
  projects/ifnet/etc/rc.d/routing
  projects/ifnet/lib/libc/net/getaddrinfo.c
  projects/ifnet/lib/libc/net/getnameinfo.c
  projects/ifnet/release/picobsd/bridge/PICOBSD
  projects/ifnet/release/picobsd/qemu/PICOBSD
  projects/ifnet/sbin/camcontrol/camcontrol.c
  projects/ifnet/sbin/gbde/gbde.8
  projects/ifnet/sbin/gbde/gbde.c
  projects/ifnet/share/man/man4/Makefile
  projects/ifnet/share/man/man4/inet6.4
  projects/ifnet/share/man/man4/ip6.4
  projects/ifnet/share/man/man5/rc.conf.5
  projects/ifnet/share/man/man7/hier.7
  projects/ifnet/sys/amd64/amd64/genassym.c
  projects/ifnet/sys/amd64/conf/GENERIC
  projects/ifnet/sys/arm/conf/ATMEL
  projects/ifnet/sys/arm/conf/DOCKSTAR
  projects/ifnet/sys/arm/conf/DREAMPLUG-1001
  projects/ifnet/sys/arm/conf/EFIKA_MX
  projects/ifnet/sys/arm/conf/ETHERNUT5
  projects/ifnet/sys/arm/conf/IMX53
  projects/ifnet/sys/arm/conf/IMX6
  projects/ifnet/sys/arm/conf/SAM9260EK
  projects/ifnet/sys/boot/forth/loader.conf
  projects/ifnet/sys/boot/zfs/zfsimpl.c
  projects/ifnet/sys/cam/ctl/ctl.c
  projects/ifnet/sys/cam/ctl/ctl_cmd_table.c
  projects/ifnet/sys/cddl/boot/zfs/zfsimpl.h
  projects/ifnet/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c
  projects/ifnet/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h
  projects/ifnet/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c
  projects/ifnet/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deadlist.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dataset.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zap_impl.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil_impl.h
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_log.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/ifnet/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
  projects/ifnet/sys/conf/NOTES
  projects/ifnet/sys/conf/files
  projects/ifnet/sys/crypto/rijndael/rijndael-api-fst.c
  projects/ifnet/sys/crypto/rijndael/rijndael-api-fst.h
  projects/ifnet/sys/dev/random/fortuna.c
  projects/ifnet/sys/dev/random/hash.c
  projects/ifnet/sys/dev/random/hash.h
  projects/ifnet/sys/dev/virtio/network/if_vtnet.c
  projects/ifnet/sys/geom/bde/g_bde.c
  projects/ifnet/sys/geom/bde/g_bde.h
  projects/ifnet/sys/i386/conf/GENERIC
  projects/ifnet/sys/i386/conf/XBOX
  projects/ifnet/sys/i386/conf/XEN
  projects/ifnet/sys/kern/kern_clock.c
  projects/ifnet/sys/kern/subr_prof.c
  projects/ifnet/sys/mips/conf/GXEMUL
  projects/ifnet/sys/mips/conf/GXEMUL32
  projects/ifnet/sys/mips/conf/OCTEON1
  projects/ifnet/sys/mips/rmi/rootfs_list.txt
  projects/ifnet/sys/modules/Makefile
  projects/ifnet/sys/net/if_types.h
  projects/ifnet/sys/net/netmap_user.h
  projects/ifnet/sys/netinet/in.h
  projects/ifnet/sys/netinet/in_pcb.c
  projects/ifnet/sys/netinet/in_pcb.h
  projects/ifnet/sys/netinet/ip_icmp.c
  projects/ifnet/sys/netinet/ip_input.c
  projects/ifnet/sys/netinet/ip_output.c
  projects/ifnet/sys/netinet6/icmp6.c
  projects/ifnet/sys/netinet6/in6.c
  projects/ifnet/sys/netinet6/in6.h
  projects/ifnet/sys/netinet6/in6_ifattach.c
  projects/ifnet/sys/netinet6/in6_pcb.c
  projects/ifnet/sys/netinet6/in6_proto.c
  projects/ifnet/sys/netinet6/in6_src.c
  projects/ifnet/sys/netinet6/ip6_output.c
  projects/ifnet/sys/netinet6/ip6_var.h
  projects/ifnet/sys/netinet6/nd6.c
  projects/ifnet/sys/netinet6/nd6.h
  projects/ifnet/sys/netinet6/nd6_nbr.c
  projects/ifnet/sys/netinet6/raw_ip6.c
  projects/ifnet/sys/netinet6/scope6.c
  projects/ifnet/sys/netinet6/scope6_var.h
  projects/ifnet/sys/netinet6/sctp6_usrreq.c
  projects/ifnet/sys/netinet6/udp6_usrreq.c
  projects/ifnet/sys/netpfil/ipfw/ip_fw_private.h
  projects/ifnet/sys/netpfil/pf/pf.c
  projects/ifnet/sys/pc98/conf/GENERIC
  projects/ifnet/sys/powerpc/conf/GENERIC
  projects/ifnet/sys/powerpc/conf/GENERIC64
  projects/ifnet/sys/powerpc/conf/WII
  projects/ifnet/sys/sparc64/conf/GENERIC
  projects/ifnet/tools/build/mk/OptionalObsoleteFiles.inc
  projects/ifnet/tools/tools/nanobsd/pcengines/ALIX_DSK
  projects/ifnet/tools/tools/nanobsd/pcengines/ALIX_NFS
  projects/ifnet/tools/tools/sysbuild/sysbuild.sh
  projects/ifnet/tools/tools/sysdoc/tunables.mdoc
  projects/ifnet/tools/tools/tinybsd/conf/default/TINYBSD
  projects/ifnet/tools/tools/tinybsd/conf/vpn/TINYBSD
  projects/ifnet/tools/tools/tinybsd/conf/wrap/TINYBSD
  projects/ifnet/usr.sbin/Makefile
  projects/ifnet/usr.sbin/bhyve/block_if.c
  projects/ifnet/usr.sbin/bsdconfig/networking/share/device.subr
  projects/ifnet/usr.sbin/ctld/chap.c
  projects/ifnet/usr.sbin/inetd/inetd.c
  projects/ifnet/usr.sbin/iscsid/chap.c
Directory Properties:
  projects/ifnet/   (props changed)
  projects/ifnet/cddl/   (props changed)
  projects/ifnet/cddl/contrib/opensolaris/   (props changed)
  projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/   (props changed)
  projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/   (props changed)
  projects/ifnet/etc/   (props changed)
  projects/ifnet/lib/libc/   (props changed)
  projects/ifnet/sbin/   (props changed)
  projects/ifnet/share/   (props changed)
  projects/ifnet/share/man/man4/   (props changed)
  projects/ifnet/sys/   (props changed)
  projects/ifnet/sys/boot/   (props changed)
  projects/ifnet/sys/cddl/contrib/opensolaris/   (props changed)
  projects/ifnet/sys/conf/   (props changed)
  projects/ifnet/usr.sbin/bhyve/   (props changed)

Modified: projects/ifnet/ObsoleteFiles.inc
==============================================================================
--- projects/ifnet/ObsoleteFiles.inc	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/ObsoleteFiles.inc	Mon Nov 10 18:47:59 2014	(r274350)
@@ -38,6 +38,12 @@
 #   xargs -n1 | sort | uniq -d;
 # done
 
+# 20141109: faith/faithd removal
+OLD_FILES+=etc/rc.d/faith
+OLD_FILES+=usr/share/man/man4/faith.4.gz
+OLD_FILES+=usr/share/man/man4/if_faith.4.gz
+OLD_FILES+=usr/sbin/faithd
+OLD_FILES+=usr/share/man/man8/faithd.8.gz
 # 20141102: postrandom obsoleted by new /dev/random code
 OLD_FILES+=etc/rc.d/postrandom
 # 20141031: initrandom obsoleted by new /dev/random code

Modified: projects/ifnet/UPDATING
==============================================================================
--- projects/ifnet/UPDATING	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/UPDATING	Mon Nov 10 18:47:59 2014	(r274350)
@@ -31,6 +31,10 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20141109:
+	faith(4) and faithd(8) has been removed from base system. It
+	has been obsolete for a very long time.
+
 20141104:
 	vt(4), the new console driver, is enabled by default. It brings
 	support for Unicode and double-width characters, as well as
@@ -833,8 +837,8 @@ COMMON ITEMS:
 	2.) update the ZFS boot block on your boot drive
 
 	The following example updates the ZFS boot block on the first
-	partition (freebsd-boot) of a GPT partitioned drive ad0:
-	"gpart bootcode -p /boot/gptzfsboot -i 1 ad0"
+	partition (freebsd-boot) of a GPT partitioned drive ada0:
+	"gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
 
 	Non-boot pools do not need these updates.
 

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/zdb/zdb.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/zdb/zdb.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -2147,6 +2147,8 @@ dump_label(const char *dev)
 	(void) close(fd);
 }
 
+static uint64_t num_large_blocks;
+
 /*ARGSUSED*/
 static int
 dump_one_dir(const char *dsname, void *arg)
@@ -2159,6 +2161,8 @@ dump_one_dir(const char *dsname, void *a
 		(void) printf("Could not open %s, error %d\n", dsname, error);
 		return (0);
 	}
+	if (dmu_objset_ds(os)->ds_large_blocks)
+		num_large_blocks++;
 	dump_dir(os);
 	dmu_objset_disown(os, FTAG);
 	fuid_table_destroy();
@@ -2169,7 +2173,7 @@ dump_one_dir(const char *dsname, void *a
 /*
  * Block statistics.
  */
-#define	PSIZE_HISTO_SIZE (SPA_MAXBLOCKSIZE / SPA_MINBLOCKSIZE + 1)
+#define	PSIZE_HISTO_SIZE (SPA_OLD_MAXBLOCKSIZE / SPA_MINBLOCKSIZE + 2)
 typedef struct zdb_blkstats {
 	uint64_t zb_asize;
 	uint64_t zb_lsize;
@@ -2234,7 +2238,15 @@ zdb_count_block(zdb_cb_t *zcb, zilog_t *
 		zb->zb_lsize += BP_GET_LSIZE(bp);
 		zb->zb_psize += BP_GET_PSIZE(bp);
 		zb->zb_count++;
-		zb->zb_psize_histogram[BP_GET_PSIZE(bp) >> SPA_MINBLOCKSHIFT]++;
+
+		/*
+		 * The histogram is only big enough to record blocks up to
+		 * SPA_OLD_MAXBLOCKSIZE; larger blocks go into the last,
+		 * "other", bucket.
+		 */
+		int idx = BP_GET_PSIZE(bp) >> SPA_MINBLOCKSHIFT;
+		idx = MIN(idx, SPA_OLD_MAXBLOCKSIZE / SPA_MINBLOCKSIZE + 1);
+		zb->zb_psize_histogram[idx]++;
 
 		zb->zb_gangs += BP_COUNT_GANG(bp);
 
@@ -2946,6 +2958,7 @@ dump_zpool(spa_t *spa)
 		dump_metaslab_groups(spa);
 
 	if (dump_opt['d'] || dump_opt['i']) {
+		uint64_t refcount;
 		dump_dir(dp->dp_meta_objset);
 		if (dump_opt['d'] >= 3) {
 			dump_bpobj(&spa->spa_deferred_bpobj,
@@ -2965,8 +2978,21 @@ dump_zpool(spa_t *spa)
 		}
 		(void) dmu_objset_find(spa_name(spa), dump_one_dir,
 		    NULL, DS_FIND_SNAPSHOTS | DS_FIND_CHILDREN);
+
+		(void) feature_get_refcount(spa,
+		    &spa_feature_table[SPA_FEATURE_LARGE_BLOCKS], &refcount);
+		if (num_large_blocks != refcount) {
+			(void) printf("large_blocks feature refcount mismatch: "
+			    "expected %lld != actual %lld\n",
+			    (longlong_t)num_large_blocks,
+			    (longlong_t)refcount);
+			rc = 2;
+		} else {
+			(void) printf("Verified large_blocks feature refcount "
+			    "is correct (%llu)\n", (longlong_t)refcount);
+		}
 	}
-	if (dump_opt['b'] || dump_opt['c'])
+	if (rc == 0 && (dump_opt['b'] || dump_opt['c']))
 		rc = dump_block_stats(spa);
 
 	if (rc == 0)

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs.8
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs.8	Mon Nov 10 18:47:59 2014	(r274350)
@@ -30,7 +30,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 30, 2014
+.Dd November 10, 2014
 .Dt ZFS 8
 .Os
 .Sh NAME
@@ -179,12 +179,12 @@
 .Ar bookmark
 .Nm
 .Cm send
-.Op Fl DnPpRve
+.Op Fl DnPpRveL
 .Op Fl i Ar snapshot | Fl I Ar snapshot
 .Ar snapshot
 .Nm
 .Cm send
-.Op Fl e
+.Op Fl eL
 .Op Fl i Ar snapshot Ns | Ns bookmark
 .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
 .Nm
@@ -1187,6 +1187,12 @@ systems is strongly discouraged, and may
 .Pp
 The size specified must be a power of two greater than or equal to 512 and less
 than or equal to 128 Kbytes.
+If the
+.Sy large_blocks
+feature is enabled on the pool, the size may be up to 1 Mbyte.
+See
+.Xr zpool-features 7
+for details on ZFS feature flags.
 .Pp
 Changing the file system's
 .Sy recordsize
@@ -2477,7 +2483,7 @@ feature.
 .It Xo
 .Nm
 .Cm send
-.Op Fl DnPpRve
+.Op Fl DnPpRveL
 .Op Fl i Ar snapshot | Fl I Ar snapshot
 .Ar snapshot
 .Xc
@@ -2549,6 +2555,22 @@ be used regardless of the dataset's
 property, but performance will be much better if the filesystem uses a
 dedup-capable checksum (eg.
 .Sy sha256 ) .
+.It Fl L
+Generate a stream which may contain blocks larger than 128KB.
+This flag
+has no effect if the
+.Sy large_blocks
+pool feature is disabled, or if the
+.Sy recordsize
+property of this filesystem has never been set above 128KB.
+The receiving system must have the
+.Sy large_blocks
+pool feature enabled as well.
+See
+.Xr zpool-features 7
+for details on ZFS feature flags and the
+.Sy large_blocks
+feature.
 .It Fl e
 Generate a more compact stream by using WRITE_EMBEDDED records for blocks
 which are stored more compactly on disk by the
@@ -2596,7 +2618,7 @@ on future versions of
 .It Xo
 .Nm
 .Cm send
-.Op Fl e
+.Op Fl eL
 .Op Fl i Ar snapshot Ns | Ns Ar bookmark
 .Ar filesystem Ns | Ns Ar volume Ns | Ns Ar snapshot
 .Xc
@@ -2622,6 +2644,22 @@ specified as the last component of the n
 If the incremental target is a clone, the incremental source can
 be the origin snapshot, or an earlier snapshot in the origin's filesystem,
 or the origin's origin, etc.
+.It Fl L
+Generate a stream which may contain blocks larger than 128KB.
+This flag
+has no effect if the
+.Sy large_blocks
+pool feature is disabled, or if the
+.Sy recordsize
+property of this filesystem has never been set above 128KB.
+The receiving system must have the
+.Sy large_blocks
+pool feature enabled as well.
+See
+.Xr zpool-features 7
+for details on ZFS feature flags and the
+.Sy large_blocks
+feature.
 .It Fl e
 Generate a more compact stream by using WRITE_EMBEDDED records for blocks
 which are stored more compactly on disk by the

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -274,9 +274,9 @@ get_usage(zfs_help_t idx)
 	case HELP_ROLLBACK:
 		return (gettext("\trollback [-rRf] <snapshot>\n"));
 	case HELP_SEND:
-		return (gettext("\tsend [-DnPpRve] [-[iI] snapshot] "
+		return (gettext("\tsend [-DnPpRvLe] [-[iI] snapshot] "
 		    "<snapshot>\n"
-		    "\tsend [-e] [-i snapshot|bookmark] "
+		    "\tsend [-Le] [-i snapshot|bookmark] "
 		    "<filesystem|volume|snapshot>\n"));
 	case HELP_SET:
 		return (gettext("\tset <property=value> "
@@ -3709,7 +3709,7 @@ zfs_do_send(int argc, char **argv)
 	boolean_t extraverbose = B_FALSE;
 
 	/* check options */
-	while ((c = getopt(argc, argv, ":i:I:RDpvnPe")) != -1) {
+	while ((c = getopt(argc, argv, ":i:I:RDpvnPLe")) != -1) {
 		switch (c) {
 		case 'i':
 			if (fromname)
@@ -3744,6 +3744,9 @@ zfs_do_send(int argc, char **argv)
 		case 'n':
 			flags.dryrun = B_TRUE;
 			break;
+		case 'L':
+			flags.largeblock = B_TRUE;
+			break;
 		case 'e':
 			flags.embed_data = B_TRUE;
 			break;
@@ -3800,6 +3803,8 @@ zfs_do_send(int argc, char **argv)
 		if (zhp == NULL)
 			return (1);
 
+		if (flags.largeblock)
+			lzc_flags |= LZC_SEND_FLAG_LARGE_BLOCK;
 		if (flags.embed_data)
 			lzc_flags |= LZC_SEND_FLAG_EMBED_DATA;
 

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7	Mon Nov 10 18:47:59 2014	(r274350)
@@ -23,7 +23,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd July 1, 2014
+.Dd November 10, 2014
 .Dt ZPOOL-FEATURES 7
 .Os
 .Sh NAME
@@ -427,6 +427,33 @@ This feature becomes
 as soon as it is enabled and will
 never return to being
 .Sy enabled .
+.It Sy large_blocks
+.Bl -column "READ\-ONLY COMPATIBLE" "org.open-zfs:large_block"
+.It GUID Ta org.open-zfs:large_block
+.It READ\-ONLY COMPATIBLE Ta no
+.It DEPENDENCIES Ta extensible_dataset
+.El
+.Pp
+The
+.Sy large_block
+feature allows the record size on a dataset to be
+set larger than 128KB.
+.Pp
+This feature becomes
+.Sy active
+once a
+.Sy recordsize
+property has been set larger than 128KB, and will return to being 
+.Sy enabled
+once all filesystems that have ever had their recordsize larger than 128KB
+are destroyed.
+.Pp
+Please note that booting from datasets that have recordsize greater than
+128KB is
+.Em NOT
+supported by the
+.Fx
+boot loader.
 .El
 .Sh SEE ALSO
 .Xr zpool 8

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -54,7 +54,6 @@ uint64_t total_stream_len = 0;
 FILE *send_stream = 0;
 boolean_t do_byteswap = B_FALSE;
 boolean_t do_cksum = B_TRUE;
-#define	INITIAL_BUFLEN (1<<20)
 
 static void
 usage(void)
@@ -67,6 +66,18 @@ usage(void)
 	exit(1);
 }
 
+static void *
+safe_malloc(size_t size)
+{
+	void *rv = malloc(size);
+	if (rv == NULL) {
+		(void) fprintf(stderr, "ERROR; failed to allocate %zu bytes\n",
+		    size);
+		abort();
+	}
+	return (rv);
+}
+
 /*
  * ssread - send stream read.
  *
@@ -158,7 +169,7 @@ print_block(char *buf, int length)
 int
 main(int argc, char *argv[])
 {
-	char *buf = malloc(INITIAL_BUFLEN);
+	char *buf = safe_malloc(SPA_MAXBLOCKSIZE);
 	uint64_t drr_record_count[DRR_NUMTYPES] = { 0 };
 	uint64_t total_records = 0;
 	dmu_replay_record_t thedrr;
@@ -307,9 +318,9 @@ main(int argc, char *argv[])
 				nvlist_t *nv;
 				int sz = drr->drr_payloadlen;
 
-				if (sz > INITIAL_BUFLEN) {
+				if (sz > SPA_MAXBLOCKSIZE) {
 					free(buf);
-					buf = malloc(sz);
+					buf = safe_malloc(sz);
 				}
 				(void) ssread(buf, sz, &zc);
 				if (ferror(send_stream))

Modified: projects/ifnet/cddl/contrib/opensolaris/cmd/ztest/ztest.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/cmd/ztest/ztest.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/cmd/ztest/ztest.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -987,9 +987,15 @@ ztest_spa_get_ashift() {
 static int
 ztest_random_blocksize(void)
 {
-	// Choose a block size >= the ashift.
-	uint64_t block_shift =
-	    ztest_random(SPA_MAXBLOCKSHIFT - ztest_spa_get_ashift() + 1);
+	uint64_t block_shift;
+	/*
+	 * Choose a block size >= the ashift.
+	 * If the SPA supports new MAXBLOCKSIZE, test up to 1MB blocks.
+	 */
+	int maxbs = SPA_OLD_MAXBLOCKSHIFT;
+	if (spa_maxblocksize(ztest_spa) == SPA_MAXBLOCKSIZE)
+		maxbs = 20;
+	block_shift = ztest_random(maxbs - ztest_spa_get_ashift() + 1);
 	return (1 << (SPA_MINBLOCKSHIFT + block_shift));
 }
 
@@ -4789,7 +4795,7 @@ ztest_fault_inject(ztest_ds_t *zd, uint6
 	char path0[MAXPATHLEN];
 	char pathrand[MAXPATHLEN];
 	size_t fsize;
-	int bshift = SPA_MAXBLOCKSHIFT + 2;	/* don't scrog all labels */
+	int bshift = SPA_OLD_MAXBLOCKSHIFT + 2;	/* don't scrog all labels */
 	int iters = 1000;
 	int maxfaults;
 	int mirror_save;

Modified: projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h	Mon Nov 10 18:47:59 2014	(r274350)
@@ -609,6 +609,9 @@ typedef struct sendflags {
 	/* show progress (ie. -v) */
 	boolean_t progress;
 
+	/* large blocks (>128K) are permitted */
+	boolean_t largeblock;
+
 	/* WRITE_EMBEDDED records of type DATA are permitted */
 	boolean_t embed_data;
 } sendflags_t;

Modified: projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -1080,21 +1080,36 @@ zfs_valid_proplist(libzfs_handle_t *hdl,
 			break;
 		}
 
-		case ZFS_PROP_RECORDSIZE:
 		case ZFS_PROP_VOLBLOCKSIZE:
-			/* must be power of two within SPA_{MIN,MAX}BLOCKSIZE */
+		case ZFS_PROP_RECORDSIZE:
+		{
+			int maxbs = SPA_MAXBLOCKSIZE;
+			if (zhp != NULL) {
+				maxbs = zpool_get_prop_int(zhp->zpool_hdl,
+				    ZPOOL_PROP_MAXBLOCKSIZE, NULL);
+			}
+			/*
+			 * Volumes are limited to a volblocksize of 128KB,
+			 * because they typically service workloads with
+			 * small random writes, which incur a large performance
+			 * penalty with large blocks.
+			 */
+			if (prop == ZFS_PROP_VOLBLOCKSIZE)
+				maxbs = SPA_OLD_MAXBLOCKSIZE;
+			/*
+			 * The value must be a power of two between
+			 * SPA_MINBLOCKSIZE and maxbs.
+			 */
 			if (intval < SPA_MINBLOCKSIZE ||
-			    intval > SPA_MAXBLOCKSIZE || !ISP2(intval)) {
+			    intval > maxbs || !ISP2(intval)) {
 				zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
-				    "'%s' must be power of 2 from %u "
-				    "to %uk"), propname,
-				    (uint_t)SPA_MINBLOCKSIZE,
-				    (uint_t)SPA_MAXBLOCKSIZE >> 10);
+				    "'%s' must be power of 2 from 512B "
+				    "to %uKB"), propname, maxbs >> 10);
 				(void) zfs_error(hdl, EZFS_BADPROP, errbuf);
 				goto error;
 			}
 			break;
-
+		}
 		case ZFS_PROP_MLSLABEL:
 		{
 #ifdef sun
@@ -1471,7 +1486,9 @@ zfs_setprop_error(libzfs_handle_t *hdl, 
 		break;
 
 	case ERANGE:
-		if (prop == ZFS_PROP_COMPRESSION) {
+	case EDOM:
+		if (prop == ZFS_PROP_COMPRESSION ||
+		    prop == ZFS_PROP_RECORDSIZE) {
 			(void) zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
 			    "property setting is not allowed on "
 			    "bootable datasets"));
@@ -3197,9 +3214,7 @@ zfs_create(libzfs_handle_t *hdl, const c
 		case EDOM:
 			zfs_error_aux(hdl, dgettext(TEXT_DOMAIN,
 			    "volume block size must be power of 2 from "
-			    "%u to %uk"),
-			    (uint_t)SPA_MINBLOCKSIZE,
-			    (uint_t)SPA_MAXBLOCKSIZE >> 10);
+			    "512B to 128KB"));
 
 			return (zfs_error(hdl, EZFS_BADPROP, errbuf));
 

Modified: projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -215,7 +215,7 @@ static void *
 cksummer(void *arg)
 {
 	dedup_arg_t *dda = arg;
-	char *buf = malloc(1<<20);
+	char *buf = zfs_alloc(dda->dedup_hdl, SPA_MAXBLOCKSIZE);
 	dmu_replay_record_t thedrr;
 	dmu_replay_record_t *drr = &thedrr;
 	struct drr_begin *drrb = &thedrr.drr_u.drr_begin;
@@ -280,9 +280,9 @@ cksummer(void *arg)
 			    DMU_COMPOUNDSTREAM && drr->drr_payloadlen != 0) {
 				int sz = drr->drr_payloadlen;
 
-				if (sz > 1<<20) {
-					free(buf);
-					buf = malloc(sz);
+				if (sz > SPA_MAXBLOCKSIZE) {
+					buf = zfs_realloc(dda->dedup_hdl, buf,
+					    SPA_MAXBLOCKSIZE, sz);
 				}
 				(void) ssread(buf, sz, ofp);
 				if (ferror(stdin))
@@ -815,7 +815,7 @@ typedef struct send_dump_data {
 	char prevsnap[ZFS_MAXNAMELEN];
 	uint64_t prevsnap_obj;
 	boolean_t seenfrom, seento, replicate, doall, fromorigin;
-	boolean_t verbose, dryrun, parsable, progress, embed_data;
+	boolean_t verbose, dryrun, parsable, progress, embed_data, large_block;
 	int outfd;
 	boolean_t err;
 	nvlist_t *fss;
@@ -1163,6 +1163,8 @@ dump_snapshot(zfs_handle_t *zhp, void *a
 		}
 
 		enum lzc_send_flags flags = 0;
+		if (sdd->large_block)
+			flags |= LZC_SEND_FLAG_LARGE_BLOCK;
 		if (sdd->embed_data)
 			flags |= LZC_SEND_FLAG_EMBED_DATA;
 
@@ -1511,6 +1513,7 @@ zfs_send(zfs_handle_t *zhp, const char *
 	sdd.parsable = flags->parsable;
 	sdd.progress = flags->progress;
 	sdd.dryrun = flags->dryrun;
+	sdd.large_block = flags->largeblock;
 	sdd.embed_data = flags->embed_data;
 	sdd.filter_cb = filter_func;
 	sdd.filter_cb_arg = cb_arg;
@@ -2545,7 +2548,7 @@ static int
 recv_skip(libzfs_handle_t *hdl, int fd, boolean_t byteswap)
 {
 	dmu_replay_record_t *drr;
-	void *buf = malloc(1<<20);
+	void *buf = zfs_alloc(hdl, SPA_MAXBLOCKSIZE);
 	char errbuf[1024];
 
 	(void) snprintf(errbuf, sizeof (errbuf), dgettext(TEXT_DOMAIN,

Modified: projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -502,6 +502,10 @@ lzc_get_holds(const char *snapname, nvli
  *
  * "fd" is the file descriptor to write the send stream to.
  *
+ * If "flags" contains LZC_SEND_FLAG_LARGE_BLOCK, the stream is permitted
+ * to contain DRR_WRITE records with drr_length > 128K, and DRR_OBJECT
+ * records with drr_blksz > 128K.
+ *
  * If "flags" contains LZC_SEND_FLAG_EMBED_DATA, the stream is permitted
  * to contain DRR_WRITE_EMBEDDED records with drr_etype==BP_EMBEDDED_TYPE_DATA,
  * which the receiving system must support (as indicated by support
@@ -518,6 +522,8 @@ lzc_send(const char *snapname, const cha
 	fnvlist_add_int32(args, "fd", fd);
 	if (from != NULL)
 		fnvlist_add_string(args, "fromsnap", from);
+	if (flags & LZC_SEND_FLAG_LARGE_BLOCK)
+		fnvlist_add_boolean(args, "largeblockok");
 	if (flags & LZC_SEND_FLAG_EMBED_DATA)
 		fnvlist_add_boolean(args, "embedok");
 	err = lzc_ioctl(ZFS_IOC_SEND_NEW, snapname, args, NULL);

Modified: projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h
==============================================================================
--- projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h	Mon Nov 10 18:47:59 2014	(r274350)
@@ -54,7 +54,8 @@ int lzc_release(nvlist_t *, nvlist_t **)
 int lzc_get_holds(const char *, nvlist_t **);
 
 enum lzc_send_flags {
-	LZC_SEND_FLAG_EMBED_DATA = 1 << 0
+	LZC_SEND_FLAG_EMBED_DATA = 1 << 0,
+	LZC_SEND_FLAG_LARGE_BLOCK = 1 << 1
 };
 
 int lzc_send(const char *, const char *, int, enum lzc_send_flags);

Modified: projects/ifnet/etc/defaults/rc.conf
==============================================================================
--- projects/ifnet/etc/defaults/rc.conf	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/defaults/rc.conf	Mon Nov 10 18:47:59 2014	(r274350)
@@ -514,9 +514,6 @@ stf_interface_ipv4plen="0"	# Prefix leng
 stf_interface_ipv6_ifid="0:0:0:1"	# IPv6 interface id for stf0.
 				# If you like, you can set "AUTO" for this.
 stf_interface_ipv6_slaid="0000"	# IPv6 Site Level Aggregator for stf0
-ipv6_faith_prefix="NO"		# Set faith prefix to enable a FAITH
-				# IPv6-to-IPv4 TCP translator.  You also need
-				# faithd(8) setup.
 ipv6_ipv4mapping="NO"		# Set to "YES" to enable IPv4 mapped IPv6 addr
 				# communication. (like ::ffff:a.b.c.d)
 ipv6_ipfilter_rules="/etc/ipf6.rules"	# rules definition file for ipfilter,

Modified: projects/ifnet/etc/network.subr
==============================================================================
--- projects/ifnet/etc/network.subr	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/network.subr	Mon Nov 10 18:47:59 2014	(r274350)
@@ -372,7 +372,6 @@ dhcpif()
 	case $1 in
 	lo[0-9]*|\
 	stf[0-9]*|\
-	faith[0-9]*|\
 	lp[0-9]*|\
 	sl[0-9]*)
 		return 1
@@ -591,7 +590,6 @@ ipv6_autoconfif()
 	case $_if in
 	lo[0-9]*|\
 	stf[0-9]*|\
-	faith[0-9]*|\
 	lp[0-9]*|\
 	sl[0-9]*)
 		return 1

Modified: projects/ifnet/etc/rc.d/Makefile
==============================================================================
--- projects/ifnet/etc/rc.d/Makefile	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/rc.d/Makefile	Mon Nov 10 18:47:59 2014	(r274350)
@@ -42,7 +42,6 @@ FILES=	DAEMON \
 	dhclient \
 	dmesg \
 	dumpon \
-	faith \
 	fsck \
 	ftpd \
 	gbde \

Modified: projects/ifnet/etc/rc.d/NETWORKING
==============================================================================
--- projects/ifnet/etc/rc.d/NETWORKING	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/rc.d/NETWORKING	Mon Nov 10 18:47:59 2014	(r274350)
@@ -4,7 +4,7 @@
 #
 
 # PROVIDE: NETWORKING NETWORK
-# REQUIRE: netif netoptions routing ppp ipfw stf faith
+# REQUIRE: netif netoptions routing ppp ipfw stf
 # REQUIRE: defaultroute routed mrouted route6d mroute6d resolv bridge
 # REQUIRE: static_arp static_ndp local_unbound
 

Modified: projects/ifnet/etc/rc.d/bridge
==============================================================================
--- projects/ifnet/etc/rc.d/bridge	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/rc.d/bridge	Mon Nov 10 18:47:59 2014	(r274350)
@@ -26,7 +26,7 @@
 #
 
 # PROVIDE: bridge
-# REQUIRE: netif faith ppp stf
+# REQUIRE: netif ppp stf
 # KEYWORD: nojail
 
 . /etc/rc.subr

Modified: projects/ifnet/etc/rc.d/defaultroute
==============================================================================
--- projects/ifnet/etc/rc.d/defaultroute	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/rc.d/defaultroute	Mon Nov 10 18:47:59 2014	(r274350)
@@ -6,7 +6,7 @@
 #
 
 # PROVIDE: defaultroute
-# REQUIRE: devd faith netif stf
+# REQUIRE: devd netif stf
 # KEYWORD: nojail
 
 . /etc/rc.subr

Modified: projects/ifnet/etc/rc.d/routing
==============================================================================
--- projects/ifnet/etc/rc.d/routing	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/etc/rc.d/routing	Mon Nov 10 18:47:59 2014	(r274350)
@@ -6,7 +6,7 @@
 #
 
 # PROVIDE: routing
-# REQUIRE: faith netif ppp stf
+# REQUIRE: netif ppp stf
 # KEYWORD: nojailvnet
 
 . /etc/rc.subr
@@ -245,7 +245,7 @@ static_inet6()
 			[Nn][Oo][Nn][Ee])
 				return
 				;;
-			lo0|faith[0-9]*)
+			lo0)
 				continue
 				;;
 			esac

Modified: projects/ifnet/lib/libc/net/getaddrinfo.c
==============================================================================
--- projects/ifnet/lib/libc/net/getaddrinfo.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/lib/libc/net/getaddrinfo.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -30,8 +30,6 @@
  */
 
 /*
- * "#ifdef FAITH" part is local hack for supporting IPv4-v6 translator.
- *
  * Issues to be discussed:
  * - Return values.  There are nonstandard return values defined and used
  *   in the source code.  This is because RFC2553 is silent about which error
@@ -101,10 +99,6 @@ __FBSDID("$FreeBSD$");
 #include "nscache.h"
 #endif
 
-#if defined(__KAME__) && defined(INET6)
-# define FAITH
-#endif
-
 #define ANY 0
 #define YES 1
 #define NO  0
@@ -1316,47 +1310,6 @@ get_ai(const struct addrinfo *pai, const
 {
 	char *p;
 	struct addrinfo *ai;
-#ifdef FAITH
-	struct in6_addr faith_prefix;
-	char *fp_str;
-	int translate = 0;
-#endif
-
-#ifdef FAITH
-	/*
-	 * Transfrom an IPv4 addr into a special IPv6 addr format for
-	 * IPv6->IPv4 translation gateway. (only TCP is supported now)
-	 *
-	 * +-----------------------------------+------------+
-	 * | faith prefix part (12 bytes)      | embedded   |
-	 * |                                   | IPv4 addr part (4 bytes)
-	 * +-----------------------------------+------------+
-	 *
-	 * faith prefix part is specified as ascii IPv6 addr format
-	 * in environmental variable GAI.
-	 * For FAITH to work correctly, routing to faith prefix must be
-	 * setup toward a machine where a FAITH daemon operates.
-	 * Also, the machine must enable some mechanizm
-	 * (e.g. faith interface hack) to divert those packet with
-	 * faith prefixed destination addr to user-land FAITH daemon.
-	 */
-	fp_str = getenv("GAI");
-	if (fp_str && inet_pton(AF_INET6, fp_str, &faith_prefix) == 1 &&
-	    afd->a_af == AF_INET && pai->ai_socktype == SOCK_STREAM) {
-		u_int32_t v4a;
-		u_int8_t v4a_top;
-
-		memcpy(&v4a, addr, sizeof v4a);
-		v4a_top = v4a >> IN_CLASSA_NSHIFT;
-		if (!IN_MULTICAST(v4a) && !IN_EXPERIMENTAL(v4a) &&
-		    v4a_top != 0 && v4a != IN_LOOPBACKNET) {
-			afd = &afdl[N_INET6];
-			memcpy(&faith_prefix.s6_addr[12], addr,
-			       sizeof(struct in_addr));
-			translate = 1;
-		}
-	}
-#endif
 
 	ai = (struct addrinfo *)malloc(sizeof(struct addrinfo)
 		+ (afd->a_socklen));
@@ -1370,11 +1323,6 @@ get_ai(const struct addrinfo *pai, const
 	ai->ai_addrlen = afd->a_socklen;
 	ai->ai_addr->sa_family = ai->ai_family = afd->a_af;
 	p = (char *)(void *)(ai->ai_addr);
-#ifdef FAITH
-	if (translate == 1)
-		memcpy(p + afd->a_off, &faith_prefix, (size_t)afd->a_addrlen);
-	else
-#endif
 	memcpy(p + afd->a_off, addr, (size_t)afd->a_addrlen);
 	return ai;
 }

Modified: projects/ifnet/lib/libc/net/getnameinfo.c
==============================================================================
--- projects/ifnet/lib/libc/net/getnameinfo.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/lib/libc/net/getnameinfo.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -414,7 +414,6 @@ getnameinfo_link(const struct sockaddr *
 	/*
 	 * The following have zero-length addresses.
 	 * IFT_ATM	(net/if_atmsubr.c)
-	 * IFT_FAITH	(net/if_faith.c)
 	 * IFT_GIF	(net/if_gif.c)
 	 * IFT_LOOP	(net/if_loop.c)
 	 * IFT_PPP	(net/if_ppp.c, net/if_spppsubr.c)

Modified: projects/ifnet/release/picobsd/bridge/PICOBSD
==============================================================================
--- projects/ifnet/release/picobsd/bridge/PICOBSD	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/release/picobsd/bridge/PICOBSD	Mon Nov 10 18:47:59 2014	(r274350)
@@ -109,7 +109,6 @@ device		tun		# Packet tunnel.
 device		pty		# Pseudo-ttys (telnet etc)
 device		md		# Memory "disks"
 #device		gif	4	# IPv6 and IPv4 tunneling
-#device		faith	1	# IPv6-to-IPv4 relaying (translation)
 device		tap
 
 #options               DEVICE_POLLING

Modified: projects/ifnet/release/picobsd/qemu/PICOBSD
==============================================================================
--- projects/ifnet/release/picobsd/qemu/PICOBSD	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/release/picobsd/qemu/PICOBSD	Mon Nov 10 18:47:59 2014	(r274350)
@@ -114,7 +114,6 @@ device		tun		# Packet tunnel.
 device		pty		# Pseudo-ttys (telnet etc)
 device		md		# Memory "disks"
 #device		gif	4	# IPv6 and IPv4 tunneling
-#device		faith	1	# IPv6-to-IPv4 relaying (translation)
 device		tap
 
 #options 	VIMAGE		# soner or later we may want to test this

Modified: projects/ifnet/sbin/camcontrol/camcontrol.c
==============================================================================
--- projects/ifnet/sbin/camcontrol/camcontrol.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sbin/camcontrol/camcontrol.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -5827,15 +5827,31 @@ scsisanitize(struct cam_device *device, 
 	if (arglist & CAM_ARG_ERR_RECOVER)
 		ccb->ccb_h.flags |= CAM_PASS_ERR_RECOVER;
 
-	if (((retval = cam_send_ccb(device, ccb)) < 0)
-	 || ((immediate == 0)
-	   && ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP))) {
-		const char errstr[] = "error sending sanitize command";
+	if (cam_send_ccb(device, ccb) < 0) {
+		warn("error sending sanitize command");
+		error = 1;
+		goto scsisanitize_bailout;
+	}
 
-		if (retval < 0)
-			warn(errstr);
-		else
-			warnx(errstr);
+	if ((ccb->ccb_h.status & CAM_STATUS_MASK) != CAM_REQ_CMP) {
+		struct scsi_sense_data *sense;
+		int error_code, sense_key, asc, ascq;
+
+		if ((ccb->ccb_h.status & CAM_STATUS_MASK) ==
+		    CAM_SCSI_STATUS_ERROR) {
+			sense = &ccb->csio.sense_data;
+			scsi_extract_sense_len(sense, ccb->csio.sense_len -
+			    ccb->csio.sense_resid, &error_code, &sense_key,
+			    &asc, &ascq, /*show_errors*/ 1);
+
+			if (sense_key == SSD_KEY_ILLEGAL_REQUEST &&
+			    asc == 0x20 && ascq == 0x00)
+				warnx("sanitize is not supported by "
+				      "this device");
+			else
+				warnx("error sanitizing this device");
+		} else
+			warnx("error sanitizing this device");
 
 		if (arglist & CAM_ARG_VERBOSE) {
 			cam_error_print(device, ccb, CAM_ESF_ALL,

Modified: projects/ifnet/sbin/gbde/gbde.8
==============================================================================
--- projects/ifnet/sbin/gbde/gbde.8	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sbin/gbde/gbde.8	Mon Nov 10 18:47:59 2014	(r274350)
@@ -233,9 +233,23 @@ pass-phrase:
 .Pp
 .Dl "gbde setkey ada0s1f -n 2 -P foo -L key2.lockfile"
 .Pp
-To destroy all copies of the masterkey:
+To invalidate your own masterkey:
+.Pp
+.Dl "gbde nuke ada0s1f"
+.Pp
+This will overwrite your masterkey sector with zeros, and results in
+a diagnostic if you try to use the key again.
+You can also destroy the other three copies of the masterkey with the
+-n argument.
+.Pp
+You can also invalidate your masterkey without leaving a tell-tale sector
+full of zeros:
 .Pp
 .Dl "gbde destroy ada0s1f"
+.Pp
+This will overwrite the information fields in your masterkey sector,
+encrypt it and write it back.
+You get a (different) diagnostic if you try to use it.
 .Sh SEE ALSO
 .Xr gbde 4 ,
 .Xr geom 4

Modified: projects/ifnet/sbin/gbde/gbde.c
==============================================================================
--- projects/ifnet/sbin/gbde/gbde.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sbin/gbde/gbde.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -300,7 +300,6 @@ cmd_attach(const struct g_bde_softc *sc,
 		gctl_ro_param(r, "key", 16, buf);
 		close(ffd);
 	}
-	/* gctl_dump(r, stdout); */
 	errstr = gctl_issue(r);
 	if (errstr != NULL)
 		errx(1, "Attach to %s failed: %s", dest, errstr);
@@ -371,7 +370,7 @@ cmd_open(struct g_bde_softc *sc, int dfd
 	if (error != 0)
 		errx(1, "Error %d decrypting lock", error);
 	if (nkey)
-		printf("Opened with key %u\n", *nkey);
+		printf("Opened with key %u\n", 1 + *nkey);
 	return;
 }
 
@@ -392,7 +391,7 @@ cmd_nuke(struct g_bde_key *gl, int dfd ,
 	free(sbuf);
 	if (i != (int)gl->sectorsize)
 		err(1, "write");
-	printf("Nuked key %d\n", key);
+	printf("Nuked key %d\n", 1 + key);
 }
 
 static void
@@ -493,7 +492,7 @@ cmd_destroy(struct g_bde_key *gl, int nk
 	bzero(&gl->sector0, sizeof gl->sector0);
 	bzero(&gl->sectorN, sizeof gl->sectorN);
 	bzero(&gl->keyoffset, sizeof gl->keyoffset);
-	bzero(&gl->flags, sizeof gl->flags);
+	gl->flags &= GBDE_F_SECT0;
 	bzero(gl->mkey, sizeof gl->mkey);
 	for (i = 0; i < G_BDE_MAXKEYS; i++)
 		if (i != nkey)

Modified: projects/ifnet/share/man/man4/Makefile
==============================================================================
--- projects/ifnet/share/man/man4/Makefile	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/share/man/man4/Makefile	Mon Nov 10 18:47:59 2014	(r274350)
@@ -132,7 +132,6 @@ MAN=	aac.4 \
 	et.4 \
 	eventtimers.4 \
 	exca.4 \
-	faith.4 \
 	fatm.4 \
 	fd.4 \
 	fdc.4 \
@@ -637,7 +636,6 @@ MLINKS+=en.4 if_en.4
 MLINKS+=enc.4 if_enc.4
 MLINKS+=epair.4 if_epair.4
 MLINKS+=et.4 if_et.4
-MLINKS+=faith.4 if_faith.4
 MLINKS+=fatm.4 if_fatm.4
 MLINKS+=fd.4 stderr.4 \
 	fd.4 stdin.4 \

Modified: projects/ifnet/share/man/man4/inet6.4
==============================================================================
--- projects/ifnet/share/man/man4/inet6.4	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/share/man/man4/inet6.4	Mon Nov 10 18:47:59 2014	(r274350)
@@ -241,17 +241,6 @@ Defaults to off.
 Boolean: the default value of a per-interface flag to
 enable/disable performing automatic link-local address configuration.
 Defaults to on.
-.It Dv IPV6CTL_KEEPFAITH
-.Pq ip6.keepfaith
-Boolean: enable/disable
-.Dq FAITH
-TCP relay IPv6-to-IPv4 translator code in the kernel.
-Refer
-.Xr faith 4
-and
-.Xr faithd 8
-for detail.
-Defaults to off.
 .It Dv IPV6CTL_LOG_INTERVAL
 .Pq ip6.log_interval
 Integer: default interval between

Modified: projects/ifnet/share/man/man4/ip6.4
==============================================================================
--- projects/ifnet/share/man/man4/ip6.4	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/share/man/man4/ip6.4	Mon Nov 10 18:47:59 2014	(r274350)
@@ -393,10 +393,6 @@ For wildcard sockets, this can restrict 
 .\".Ox
 .\"IPv6 sockets are always IPv6-only, so the socket option is read-only
 .\"(not modifiable).
-.It Dv IPV6_FAITH Fa "int *"
-Get or set the status of whether
-.Xr faith 4
-connections can be made to this socket.
 .It Dv IPV6_USE_MIN_MTU Fa "int *"
 Get or set whether the minimal IPv6 maximum transmission unit (MTU) size
 will be used to avoid fragmentation from occurring for subsequent

Modified: projects/ifnet/share/man/man5/rc.conf.5
==============================================================================
--- projects/ifnet/share/man/man5/rc.conf.5	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/share/man/man5/rc.conf.5	Mon Nov 10 18:47:59 2014	(r274350)
@@ -2948,15 +2948,6 @@ This can be set to
 .Pq Vt str
 IPv6 Site Level Aggregator for
 .Xr stf 4 .
-.It Va ipv6_faith_prefix
-.Pq Vt str
-If not set to
-.Dq Li NO ,
-this is the faith prefix to enable a FAITH IPv6-to-IPv4 TCP
-translator.
-You also need
-.Xr faithd 8
-setup.
 .It Va ipv6_ipv4mapping
 .Pq Vt bool
 If set to

Modified: projects/ifnet/share/man/man7/hier.7
==============================================================================
--- projects/ifnet/share/man/man7/hier.7	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/share/man/man7/hier.7	Mon Nov 10 18:47:59 2014	(r274350)
@@ -28,7 +28,7 @@
 .\"	@(#)hier.7	8.1 (Berkeley) 6/5/93
 .\" $FreeBSD$
 .\"
-.Dd July 25, 2014
+.Dd November 10, 2014
 .Dt HIER 7
 .Os
 .Sh NAME
@@ -380,6 +380,8 @@ shared libraries for compatibility
 .It Pa aout/
 a.out backward compatibility libraries
 .El
+.It Pa debug/
+standalone debug data for the base system libraries and binaries
 .It Pa dtrace/
 DTrace library scripts
 .It Pa engines/

Modified: projects/ifnet/sys/amd64/amd64/genassym.c
==============================================================================
--- projects/ifnet/sys/amd64/amd64/genassym.c	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sys/amd64/amd64/genassym.c	Mon Nov 10 18:47:59 2014	(r274350)
@@ -61,11 +61,6 @@ __FBSDID("$FreeBSD$");
 #include <vm/pmap.h>
 #include <vm/vm_map.h>
 #include <sys/proc.h>
-#include <net/if.h>
-#include <netinet/in.h>
-#include <nfs/nfsproto.h>
-#include <nfsclient/nfs.h>
-#include <nfs/nfsdiskless.h>
 #include <x86/apicreg.h>
 #include <machine/cpu.h>
 #include <machine/pcb.h>

Modified: projects/ifnet/sys/amd64/conf/GENERIC
==============================================================================
--- projects/ifnet/sys/amd64/conf/GENERIC	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sys/amd64/conf/GENERIC	Mon Nov 10 18:47:59 2014	(r274350)
@@ -310,7 +310,6 @@ device		vlan			# 802.1Q VLAN support
 device		tun			# Packet tunnel.
 device		md			# Memory "disks"
 device		gif			# IPv6 and IPv4 tunneling
-device		faith			# IPv6-to-IPv4 relaying (translation)
 device		firmware		# firmware assist module
 
 # The `bpf' device enables the Berkeley Packet Filter.

Modified: projects/ifnet/sys/arm/conf/ATMEL
==============================================================================
--- projects/ifnet/sys/arm/conf/ATMEL	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sys/arm/conf/ATMEL	Mon Nov 10 18:47:59 2014	(r274350)
@@ -143,7 +143,6 @@ device		vlan			# 802.1Q VLAN support
 device		tun			# Packet tunnel.
 device		md			# Memory "disks"
 device		gif			# IPv6 and IPv4 tunneling
-device		faith			# IPv6-to-IPv4 relaying (translation)
 #device		firmware		# firmware assist module
 
 # SCSI peripherals

Modified: projects/ifnet/sys/arm/conf/DOCKSTAR
==============================================================================
--- projects/ifnet/sys/arm/conf/DOCKSTAR	Mon Nov 10 18:20:46 2014	(r274349)
+++ projects/ifnet/sys/arm/conf/DOCKSTAR	Mon Nov 10 18:47:59 2014	(r274350)
@@ -54,7 +54,6 @@ options 	FDT_DTB_STATIC
 
 # Misc pseudo devices
 device		bpf			# Required for DHCP

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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201411101848.sAAIm01g015720>