svn commit: r249208 - in projects/camlock: . cddl/contrib/opensolaris/lib/libzpool/common cddl/contrib/opensolaris/lib/libzpool/common/sys lib/libc/sys lib/libpam/modules/pam_unix share/misc sys/am...

Alexander Motin mav at FreeBSD.org
Sat Apr 6 17:20:28 UTC 2013


Author: mav
Date: Sat Apr  6 17:20:22 2013
New Revision: 249208
URL: http://svnweb.freebsd.org/changeset/base/249208

Log:
  MFC @ r249206

Added:
  projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
     - copied unchanged from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d
Deleted:
  projects/camlock/sys/dev/ata/ata-queue.c
  projects/camlock/usr.sbin/bhyve/uart.c
Modified:
  projects/camlock/ObsoleteFiles.inc
  projects/camlock/UPDATING
  projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
  projects/camlock/lib/libc/sys/getsockopt.2
  projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c
  projects/camlock/share/misc/committers-ports.dot
  projects/camlock/sys/amd64/vmm/io/vlapic.c
  projects/camlock/sys/arm/arm/machdep.c
  projects/camlock/sys/arm/arm/vfp.c
  projects/camlock/sys/arm/include/setjmp.h
  projects/camlock/sys/arm/ti/aintc.c
  projects/camlock/sys/cam/ata/ata_all.h
  projects/camlock/sys/cam/ata/ata_da.c
  projects/camlock/sys/cam/ata/ata_xpt.c
  projects/camlock/sys/cam/cam_ccb.h
  projects/camlock/sys/cam/ctl/ctl_backend_block.c
  projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_file.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_missing.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_raidz.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_root.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_leaf.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zap_micro.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfeature.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_acl.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_onexit.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_replay.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_checksum.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c
  projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c
  projects/camlock/sys/conf/files
  projects/camlock/sys/dev/ata/ata-all.c
  projects/camlock/sys/dev/ata/ata-all.h
  projects/camlock/sys/dev/ata/ata-lowlevel.c
  projects/camlock/sys/dev/ciss/ciss.c
  projects/camlock/sys/dev/usb/serial/uftdi.c
  projects/camlock/sys/dev/usb/usbdevs
  projects/camlock/sys/geom/geom_dev.c
  projects/camlock/sys/kern/kern_intr.c
  projects/camlock/sys/kern/kern_sig.c
  projects/camlock/sys/modules/ata/atacore/Makefile
  projects/camlock/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c
  projects/camlock/sys/sys/proc.h
  projects/camlock/sys/sys/systm.h
  projects/camlock/sys/vm/vm_radix.c
  projects/camlock/usr.bin/calendar/calendar.1
  projects/camlock/usr.sbin/bhyve/Makefile
  projects/camlock/usr.sbin/bhyve/mptbl.c
  projects/camlock/usr.sbin/bluetooth/ath3kfw/ath3kfw.c
Directory Properties:
  projects/camlock/   (props changed)
  projects/camlock/cddl/   (props changed)
  projects/camlock/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/lib/libc/   (props changed)
  projects/camlock/sys/   (props changed)
  projects/camlock/sys/amd64/vmm/   (props changed)
  projects/camlock/sys/cddl/contrib/opensolaris/   (props changed)
  projects/camlock/sys/conf/   (props changed)
  projects/camlock/usr.bin/calendar/   (props changed)
  projects/camlock/usr.sbin/bhyve/   (props changed)

Modified: projects/camlock/ObsoleteFiles.inc
==============================================================================
--- projects/camlock/ObsoleteFiles.inc	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/ObsoleteFiles.inc	Sat Apr  6 17:20:22 2013	(r249208)
@@ -43,7 +43,7 @@ OLD_FILES+=sbin/atacontrol
 OLD_FILES+=usr/share/man/man8/atacontrol.8.gz
 OLD_FILES+=usr/share/man/man4/atapicam.4.gz
 OLD_FILES+=usr/share/man/man4/ataraid.4.gz
-OLD_FILES+=usr.sbin/burncd
+OLD_FILES+=usr/sbin/burncd
 OLD_FILES+=usr/share/man/man8/burncd.8.gz
 # 20130316: vinum.4 removed
 OLD_FILES+=usr/share/man/man4/vinum.4.gz

Modified: projects/camlock/UPDATING
==============================================================================
--- projects/camlock/UPDATING	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/UPDATING	Sat Apr  6 17:20:22 2013	(r249208)
@@ -26,6 +26,13 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10
 	disable the most expensive debugging functionality run
 	"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
 
+20130404:
+	Legacy ATA stack, disabled and replaced by new CAM-based one since
+	FreeBSD 9.0, completely removed from the sources.  Kernel modules
+	atadisk and atapi*, user-level tools atacontrol and burncd are
+	removed.  Kernel option `options ATA_CAM` is now permanently enabled
+	and removed.
+
 20130308:
 	CTL_DISABLE has also been added to the sparc64 GENERIC (for further
 	information, see the respective 20130304 entry).

Modified: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h
==============================================================================
--- projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,6 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  * Copyright (c) 2012, Joyent, Inc. All rights reserved.
  */
 
@@ -86,6 +87,9 @@ extern "C" {
 #include <sys/sysevent/dev.h>
 #include <machine/atomic.h>
 #include <sys/debug.h>
+#ifdef illumos
+#include "zfs.h"
+#endif
 
 #define	ZFS_EXPORTS_PATH	"/etc/zfs/exports"
 
@@ -133,28 +137,64 @@ extern int aok;
 
 #ifdef DTRACE_PROBE
 #undef	DTRACE_PROBE
-#define	DTRACE_PROBE(a)	((void)0)
 #endif	/* DTRACE_PROBE */
+#ifdef illumos
+#define	DTRACE_PROBE(a) \
+	ZFS_PROBE0(#a)
+#endif
 
 #ifdef DTRACE_PROBE1
 #undef	DTRACE_PROBE1
-#define	DTRACE_PROBE1(a, b, c)	((void)0)
 #endif	/* DTRACE_PROBE1 */
+#ifdef illumos
+#define	DTRACE_PROBE1(a, b, c) \
+	ZFS_PROBE1(#a, (unsigned long)c)
+#endif
 
 #ifdef DTRACE_PROBE2
 #undef	DTRACE_PROBE2
-#define	DTRACE_PROBE2(a, b, c, d, e)	((void)0)
 #endif	/* DTRACE_PROBE2 */
+#ifdef illumos
+#define	DTRACE_PROBE2(a, b, c, d, e) \
+	ZFS_PROBE2(#a, (unsigned long)c, (unsigned long)e)
+#endif
 
 #ifdef DTRACE_PROBE3
 #undef	DTRACE_PROBE3
-#define	DTRACE_PROBE3(a, b, c, d, e, f, g)	((void)0)
 #endif	/* DTRACE_PROBE3 */
+#ifdef illumos
+#define	DTRACE_PROBE3(a, b, c, d, e, f, g) \
+	ZFS_PROBE3(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g)
+#endif
 
 #ifdef DTRACE_PROBE4
 #undef	DTRACE_PROBE4
-#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i)	((void)0)
 #endif	/* DTRACE_PROBE4 */
+#ifdef illumos
+#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i) \
+	ZFS_PROBE4(#a, (unsigned long)c, (unsigned long)e, (unsigned long)g, \
+	(unsigned long)i)
+#endif
+
+#ifdef illumos
+/*
+ * We use the comma operator so that this macro can be used without much
+ * additional code.  For example, "return (EINVAL);" becomes
+ * "return (SET_ERROR(EINVAL));".  Note that the argument will be evaluated
+ * twice, so it should not have side effects (e.g. something like:
+ * "return (SET_ERROR(log_error(EINVAL, info)));" would log the error twice).
+ */
+#define	SET_ERROR(err)	(ZFS_SET_ERROR(err), err)
+#else	/* !illumos */
+
+#define	DTRACE_PROBE(a)	((void)0)
+#define	DTRACE_PROBE1(a, b, c)	((void)0)
+#define	DTRACE_PROBE2(a, b, c, d, e)	((void)0)
+#define	DTRACE_PROBE3(a, b, c, d, e, f, g)	((void)0)
+#define	DTRACE_PROBE4(a, b, c, d, e, f, g, h, i)	((void)0)
+
+#define SET_ERROR(err) (err)
+#endif	/* !illumos */
 
 /*
  * Threads

Copied: projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d (from r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ projects/camlock/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d	Sat Apr  6 17:20:22 2013	(r249208, copy of r249206, head/cddl/contrib/opensolaris/lib/libzpool/common/zfs.d)
@@ -0,0 +1,36 @@
+/*
+ * CDDL HEADER START
+ *
+ * This file and its contents are supplied under the terms of the
+ * Common Development and Distribution License ("CDDL"), version 1.0.
+ * You may only use this file in accordance with the terms of version
+ * 1.0 of the CDDL.
+ *
+ * A full copy of the text of the CDDL should have accompanied this
+ * source.  A copy of the CDDL is also available via the Internet at
+ * http://www.illumos.org/license/CDDL.
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2013 by Delphix. All rights reserved.
+ */
+
+provider zfs {
+	probe probe0(char *probename);
+	probe probe1(char *probename, unsigned long arg1);
+	probe probe2(char *probename, unsigned long arg1, unsigned long arg2);
+	probe probe3(char *probename, unsigned long arg1, unsigned long arg2,
+	    unsigned long arg3);
+	probe probe4(char *probename, unsigned long arg1, unsigned long arg2,
+	    unsigned long arg3, unsigned long arg4);
+
+	probe set__error(int err);
+};
+
+#pragma D attributes Evolving/Evolving/ISA provider zfs provider
+#pragma D attributes Private/Private/Unknown provider zfs module
+#pragma D attributes Private/Private/Unknown provider zfs function
+#pragma D attributes Evolving/Evolving/ISA provider zfs name
+#pragma D attributes Evolving/Evolving/ISA provider zfs args

Modified: projects/camlock/lib/libc/sys/getsockopt.2
==============================================================================
--- projects/camlock/lib/libc/sys/getsockopt.2	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/lib/libc/sys/getsockopt.2	Sat Apr  6 17:20:22 2013	(r249208)
@@ -28,7 +28,7 @@
 .\"     @(#)getsockopt.2	8.4 (Berkeley) 5/2/95
 .\" $FreeBSD$
 .\"
-.Dd February 26, 2012
+.Dd April 5, 2013
 .Dt GETSOCKOPT 2
 .Os
 .Sh NAME
@@ -437,7 +437,7 @@ The
 .Vt cmsghdr
 fields have the following values for TIMESTAMP:
 .Bd -literal
-     cmsg_len = sizeof(struct timeval);
+     cmsg_len = CMSG_LEN(sizeof(struct timeval));
      cmsg_level = SOL_SOCKET;
      cmsg_type = SCM_TIMESTAMP;
 .Ed
@@ -445,7 +445,7 @@ fields have the following values for TIM
 and for
 .Dv SO_BINTIME :
 .Bd -literal
-     cmsg_len = sizeof(struct bintime);
+     cmsg_len = CMSG_LEN(sizeof(struct bintime));
      cmsg_level = SOL_SOCKET;
      cmsg_type = SCM_BINTIME;
 .Ed

Modified: projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c
==============================================================================
--- projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/lib/libpam/modules/pam_unix/pam_unix.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -460,14 +460,14 @@ to64(char *s, long v, int n)
 }
 
 /* Salt suitable for traditional DES and MD5 */
-void
-makesalt(char salt[SALTSIZE])
+static void
+makesalt(char salt[SALTSIZE + 1])
 {
 	int i;
 
 	/* These are not really random numbers, they are just
 	 * numbers that change to thwart construction of a
-	 * dictionary. This is exposed to the public.
+	 * dictionary.
 	 */
 	for (i = 0; i < SALTSIZE; i += 4)
 		to64(&salt[i], arc4random(), 4);

Modified: projects/camlock/share/misc/committers-ports.dot
==============================================================================
--- projects/camlock/share/misc/committers-ports.dot	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/share/misc/committers-ports.dot	Sat Apr  6 17:20:22 2013	(r249208)
@@ -51,6 +51,7 @@ alepulver [label="Alejandro Pulver\nalep
 alexbl [label="Alexander Botero-Lowry\nalexbl at FreeBSD.org\n2006/09/11"]
 amdmi3 [label="Dmitry Marakasov\namdmi3 at FreeBSD.org\n2008/06/19"]
 anray [label="Andrey Slusar\nanray at FreeBSD.org\n2005/12/11"]
+antoine [label="Antoine Brodin\nantoine at FreeBSD.org\n2013/04/03"]
 araujo [label="Marcelo Araujo\naraujo at FreeBSD.org\n2007/04/26"]
 arved [label="Tilman Linneweh\narved at FreeBSD.org\n2002/10/15"]
 ashish [label="Ashish SHUKLA\nashish at FreeBSD.org\n2010/06/10"]
@@ -283,6 +284,7 @@ delphij -> rafan
 demon -> mat
 
 eadler -> ak
+eadler -> antoine
 eadler -> dbn
 eadler -> bdrewery
 eadler -> gjb
@@ -398,6 +400,7 @@ mat -> thierry
 mezz -> tmclaugh
 
 miwi -> amdmi3
+miwi -> antoine
 miwi -> avilla
 miwi -> beat
 miwi -> bf

Modified: projects/camlock/sys/amd64/vmm/io/vlapic.c
==============================================================================
--- projects/camlock/sys/amd64/vmm/io/vlapic.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/amd64/vmm/io/vlapic.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -128,6 +128,8 @@ static int
 vlapic_timer_divisor(uint32_t dcr)
 {
 	switch (dcr & 0xB) {
+	case APIC_TDCR_1:
+		return (1);
 	case APIC_TDCR_2:
 		return (2);
 	case APIC_TDCR_4:

Modified: projects/camlock/sys/arm/arm/machdep.c
==============================================================================
--- projects/camlock/sys/arm/arm/machdep.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/arm/machdep.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -183,6 +183,10 @@ SYSCTL_UINT(_hw_board, OID_AUTO, revisio
 SYSCTL_STRING(_hw_board, OID_AUTO, serial, CTLFLAG_RD,
     board_serial, 0, "Board serial");
 
+int vfp_exists;
+SYSCTL_INT(_hw, HW_FLOATINGPT, floatingpoint, CTLFLAG_RD,
+    &vfp_exists, 0, "Floating point support enabled");
+
 void
 board_set_serial(uint64_t serial)
 {

Modified: projects/camlock/sys/arm/arm/vfp.c
==============================================================================
--- projects/camlock/sys/arm/arm/vfp.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/arm/vfp.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -47,7 +47,7 @@ void	vfp_restore(struct vfp_state *);
 void	vfp_store(struct vfp_state *);
 void	set_coprocessorACR(u_int);
 
-boolean_t vfp_exists;
+extern int vfp_exists;
 static struct undefined_handler vfp10_uh, vfp11_uh;
 
 /* The VFMXR command using coprocessor commands */

Modified: projects/camlock/sys/arm/include/setjmp.h
==============================================================================
--- projects/camlock/sys/arm/include/setjmp.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/include/setjmp.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -87,10 +87,13 @@
 /* Only valid with the _JB_MAGIC_SETJMP magic */
 
 #define _JB_SIGMASK		25
+
+#ifndef __ASSEMBLER__
 #if __BSD_VISIBLE || __POSIX_VISIBLE || __XSI_VISIBLE
 typedef struct _sigjmp_buf { int _sjb[_JBLEN + 1]; } sigjmp_buf[1];
 #endif
 
 typedef struct _jmp_buf { int _jb[_JBLEN + 1]; } jmp_buf[1];
+#endif
 
 #endif /* !_MACHINE_SETJMP_H_ */

Modified: projects/camlock/sys/arm/ti/aintc.c
==============================================================================
--- projects/camlock/sys/arm/ti/aintc.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/arm/ti/aintc.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -157,6 +157,7 @@ arm_get_next_irq(int last_irq)
 	if ((active_irq & 0xffffff80)) {
 		device_printf(ti_aintc_sc->sc_dev,
 			"Spurious interrupt detected (0x%08x)\n", active_irq);
+		aintc_write_4(INTC_SIR_IRQ, 0);
 		return -1;
 	}
 

Modified: projects/camlock/sys/cam/ata/ata_all.h
==============================================================================
--- projects/camlock/sys/cam/ata/ata_all.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_all.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -35,8 +35,9 @@ struct ccb_ataio;
 struct cam_periph;
 union  ccb;
 
-#define	SID_AEN		0x04	/* Abuse inq_flags bit to track enabled AEN. */
-#define	SID_DMA		0x10	/* Abuse inq_flags bit to track enabled DMA. */
+#define	SID_DMA48	0x01 /* Abuse inq_flags bit to track enabled DMA48. */
+#define	SID_AEN		0x04 /* Abuse inq_flags bit to track enabled AEN. */
+#define	SID_DMA		0x10 /* Abuse inq_flags bit to track enabled DMA. */
 
 struct ata_cmd {
 	u_int8_t	flags;		/* ATA command flags */

Modified: projects/camlock/sys/cam/ata/ata_da.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_da.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_da.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -75,18 +75,19 @@ typedef enum {
 } ada_state;
 
 typedef enum {
-	ADA_FLAG_PACK_INVALID	= 0x001,
-	ADA_FLAG_CAN_48BIT	= 0x002,
-	ADA_FLAG_CAN_FLUSHCACHE	= 0x004,
-	ADA_FLAG_CAN_NCQ	= 0x008,
-	ADA_FLAG_CAN_DMA	= 0x010,
-	ADA_FLAG_NEED_OTAG	= 0x020,
-	ADA_FLAG_WENT_IDLE	= 0x040,
-	ADA_FLAG_CAN_TRIM	= 0x080,
-	ADA_FLAG_OPEN		= 0x100,
-	ADA_FLAG_SCTX_INIT	= 0x200,
-	ADA_FLAG_CAN_CFA        = 0x400,
-	ADA_FLAG_CAN_POWERMGT   = 0x800
+	ADA_FLAG_PACK_INVALID	= 0x0001,
+	ADA_FLAG_CAN_48BIT	= 0x0002,
+	ADA_FLAG_CAN_FLUSHCACHE	= 0x0004,
+	ADA_FLAG_CAN_NCQ	= 0x0008,
+	ADA_FLAG_CAN_DMA	= 0x0010,
+	ADA_FLAG_NEED_OTAG	= 0x0020,
+	ADA_FLAG_WENT_IDLE	= 0x0040,
+	ADA_FLAG_CAN_TRIM	= 0x0080,
+	ADA_FLAG_OPEN		= 0x0100,
+	ADA_FLAG_SCTX_INIT	= 0x0200,
+	ADA_FLAG_CAN_CFA        = 0x0400,
+	ADA_FLAG_CAN_POWERMGT   = 0x0800,
+	ADA_FLAG_CAN_DMA48	= 0x1000
 } ada_flags;
 
 typedef enum {
@@ -613,6 +614,9 @@ adaschedule(struct cam_periph *periph)
 	struct ada_softc *softc = (struct ada_softc *)periph->softc;
 	uint32_t prio;
 
+	if (softc->state != ADA_STATE_NORMAL)
+		return;
+
 	/* Check if cam_periph_getccb() was called. */
 	prio = periph->immediate_priority;
 
@@ -899,6 +903,15 @@ adaasync(void *callback_arg, u_int32_t c
 			softc->flags |= ADA_FLAG_CAN_DMA;
 		else
 			softc->flags &= ~ADA_FLAG_CAN_DMA;
+		if (cgd.ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) {
+			softc->flags |= ADA_FLAG_CAN_48BIT;
+			if (cgd.inq_flags & SID_DMA48)
+				softc->flags |= ADA_FLAG_CAN_DMA48;
+			else
+				softc->flags &= ~ADA_FLAG_CAN_DMA48;
+		} else
+			softc->flags &= ~(ADA_FLAG_CAN_48BIT |
+			    ADA_FLAG_CAN_DMA48);
 		if ((cgd.ident_data.satacapabilities & ATA_SUPPORT_NCQ) &&
 		    (cgd.inq_flags & SID_DMA) && (cgd.inq_flags & SID_CmdQue))
 			softc->flags |= ADA_FLAG_CAN_NCQ;
@@ -1065,8 +1078,11 @@ adaregister(struct cam_periph *periph, v
 	if ((cgd->ident_data.capabilities1 & ATA_SUPPORT_DMA) &&
 	    (cgd->inq_flags & SID_DMA))
 		softc->flags |= ADA_FLAG_CAN_DMA;
-	if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48)
+	if (cgd->ident_data.support.command2 & ATA_SUPPORT_ADDRESS48) {
 		softc->flags |= ADA_FLAG_CAN_48BIT;
+		if (cgd->inq_flags & SID_DMA48)
+			softc->flags |= ADA_FLAG_CAN_DMA48;
+	}
 	if (cgd->ident_data.support.command2 & ATA_SUPPORT_FLUSHCACHE)
 		softc->flags |= ADA_FLAG_CAN_FLUSHCACHE;
 	if (cgd->ident_data.support.command1 & ATA_SUPPORT_POWERMGT)
@@ -1449,7 +1465,7 @@ adastart(struct cam_periph *periph, unio
 			} else if ((softc->flags & ADA_FLAG_CAN_48BIT) &&
 			    (lba + count >= ATA_MAX_28BIT_LBA ||
 			    count > 256)) {
-				if (softc->flags & ADA_FLAG_CAN_DMA) {
+				if (softc->flags & ADA_FLAG_CAN_DMA48) {
 					if (bp->bio_cmd == BIO_READ) {
 						ata_48bit_cmd(ataio, ATA_READ_DMA48,
 						    0, lba, count);

Modified: projects/camlock/sys/cam/ata/ata_xpt.c
==============================================================================
--- projects/camlock/sys/cam/ata/ata_xpt.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ata/ata_xpt.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -963,19 +963,22 @@ noerror:
 		xpt_schedule(periph, priority);
 		goto out;
 	case PROBE_SETMODE:
-		if (path->device->transport != XPORT_SATA)
-			goto notsata;
 		/* Set supported bits. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
 		cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_CURRENT_SETTINGS;
 		xpt_action((union ccb *)&cts);
-		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
+		if (path->device->transport == XPORT_SATA &&
+		    cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps = cts.xport_specific.sata.caps & CTS_SATA_CAPS_H;
+		else if (path->device->transport == XPORT_ATA &&
+		    cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS)
+			caps = cts.xport_specific.ata.caps & CTS_ATA_CAPS_H;
 		else
 			caps = 0;
-		if (ident_buf->satacapabilities != 0xffff) {
+		if (path->device->transport == XPORT_SATA &&
+		    ident_buf->satacapabilities != 0xffff) {
 			if (ident_buf->satacapabilities & ATA_SUPPORT_IFPWRMNGTRCV)
 				caps |= CTS_SATA_CAPS_D_PMREQ;
 			if (ident_buf->satacapabilities & ATA_SUPPORT_HAPST)
@@ -987,19 +990,42 @@ noerror:
 		cts.ccb_h.func_code = XPT_GET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_USER_SETTINGS;
 		xpt_action((union ccb *)&cts);
-		if (cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
+		if (path->device->transport == XPORT_SATA &&
+		    cts.xport_specific.sata.valid & CTS_SATA_VALID_CAPS)
 			caps &= cts.xport_specific.sata.caps;
+		else if (path->device->transport == XPORT_ATA &&
+		    cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS)
+			caps &= cts.xport_specific.ata.caps;
 		else
 			caps = 0;
+		/*
+		 * Remember what transport thinks about 48-bit DMA.  If
+		 * capability information is not provided or transport is
+		 * SATA, we take support for granted.
+		 */
+		if (!(path->device->inq_flags & SID_DMA) ||
+		    (path->device->transport == XPORT_ATA &&
+		    (cts.xport_specific.ata.valid & CTS_ATA_VALID_CAPS) &&
+		    !(caps & CTS_ATA_CAPS_H_DMA48)))
+			path->device->inq_flags &= ~SID_DMA48;
+		else
+			path->device->inq_flags |= SID_DMA48;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
 		cts.ccb_h.func_code = XPT_SET_TRAN_SETTINGS;
 		cts.type = CTS_TYPE_CURRENT_SETTINGS;
-		cts.xport_specific.sata.caps = caps;
-		cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
+		if (path->device->transport == XPORT_SATA) {
+			cts.xport_specific.sata.caps = caps;
+			cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
+		} else {
+			cts.xport_specific.ata.caps = caps;
+			cts.xport_specific.ata.valid = CTS_ATA_VALID_CAPS;
+		}
 		xpt_action((union ccb *)&cts);
 		softc->caps = caps;
+		if (path->device->transport != XPORT_SATA)
+			goto notsata;
 		if ((ident_buf->satasupport & ATA_SUPPORT_IFPWRMNGT) &&
 		    (!(softc->caps & CTS_SATA_CAPS_H_PMREQ)) !=
 		    (!(ident_buf->sataenabled & ATA_SUPPORT_IFPWRMNGT))) {
@@ -1151,6 +1177,11 @@ notsata:
 			caps &= cts.xport_specific.sata.caps;
 		else
 			caps = 0;
+		/* Remember what transport thinks about AEN. */
+		if (caps & CTS_SATA_CAPS_H_AN)
+			path->device->inq_flags |= SID_AEN;
+		else
+			path->device->inq_flags &= ~SID_AEN;
 		/* Store result to SIM. */
 		bzero(&cts, sizeof(cts));
 		xpt_setup_ccb(&cts.ccb_h, path, CAM_PRIORITY_NONE);
@@ -1160,11 +1191,6 @@ notsata:
 		cts.xport_specific.sata.valid = CTS_SATA_VALID_CAPS;
 		xpt_action((union ccb *)&cts);
 		softc->caps = caps;
-		/* Remember what transport thinks about AEN. */
-		if (softc->caps & CTS_SATA_CAPS_H_AN)
-			path->device->inq_flags |= SID_AEN;
-		else
-			path->device->inq_flags &= ~SID_AEN;
 		xpt_async(AC_GETDEV_CHANGED, path, NULL);
 		if (periph->path->device->flags & CAM_DEV_UNCONFIGURED) {
 			path->device->flags &= ~CAM_DEV_UNCONFIGURED;
@@ -2067,4 +2093,3 @@ ata_announce_periph(struct cam_periph *p
 	}
 	printf("\n");
 }
-

Modified: projects/camlock/sys/cam/cam_ccb.h
==============================================================================
--- projects/camlock/sys/cam/cam_ccb.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/cam_ccb.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -893,9 +893,14 @@ struct ccb_trans_settings_pata {
 #define	CTS_ATA_VALID_MODE		0x01
 #define	CTS_ATA_VALID_BYTECOUNT		0x02
 #define	CTS_ATA_VALID_ATAPI		0x20
+#define	CTS_ATA_VALID_CAPS		0x40
 	int		mode;		/* Mode */
 	u_int 		bytecount;	/* Length of PIO transaction */
 	u_int 		atapi;		/* Length of ATAPI CDB */
+	u_int 		caps;		/* Device and host SATA caps. */
+#define	CTS_ATA_CAPS_H			0x0000ffff
+#define	CTS_ATA_CAPS_H_DMA48		0x00000001 /* 48-bit DMA */
+#define	CTS_ATA_CAPS_D			0xffff0000
 };
 
 struct ccb_trans_settings_sata {

Modified: projects/camlock/sys/cam/ctl/ctl_backend_block.c
==============================================================================
--- projects/camlock/sys/cam/ctl/ctl_backend_block.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cam/ctl/ctl_backend_block.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -950,6 +950,7 @@ ctl_be_block_cw_dispatch(struct ctl_be_b
 	switch (io->scsiio.cdb[0]) {
 	case SYNCHRONIZE_CACHE:
 	case SYNCHRONIZE_CACHE_16:
+		beio->bio_cmd = BIO_FLUSH;
 		beio->ds_trans_type = DEVSTAT_NO_DATA;
 		beio->ds_tag_type = DEVSTAT_TAG_ORDERED;
 		beio->io_len = 0;

Modified: projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h
==============================================================================
--- projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/compat/opensolaris/sys/sdt.h	Sat Apr  6 17:20:22 2013	(r249208)
@@ -41,6 +41,8 @@
 #define	DTRACE_PROBE1(name, type1, arg1)
 #define	DTRACE_PROBE2(name, type1, arg1, type2, arg2)
 #define	DTRACE_PROBE3(name, type1, arg1, type2, arg2, type3, arg3)
-#define	DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4) 
+#define	DTRACE_PROBE4(name, type1, arg1, type2, arg2, type3, arg3, type4, arg4)
+
+#define	SET_ERROR(err)	(err)
 
 #endif	/* _OPENSOLARIS_SYS_SDT_H_ */

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2011 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 /*
@@ -3738,14 +3738,14 @@ arc_memory_throttle(uint64_t reserve, ui
 	 */
 	if (curproc == pageproc) {
 		if (page_load > available_memory / 4)
-			return (ERESTART);
+			return (SET_ERROR(ERESTART));
 		/* Note: reserve is inflated, so we deflate */
 		page_load += reserve / 8;
 		return (0);
 	} else if (page_load > 0 && arc_reclaim_needed()) {
 		/* memory is low, delay before restarting */
 		ARCSTAT_INCR(arcstat_memory_throttle_count, 1);
-		return (EAGAIN);
+		return (SET_ERROR(EAGAIN));
 	}
 	page_load = 0;
 
@@ -3760,7 +3760,7 @@ arc_memory_throttle(uint64_t reserve, ui
 
 	if (inflight_data > available_memory / 4) {
 		ARCSTAT_INCR(arcstat_memory_throttle_count, 1);
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 #endif
 	return (0);
@@ -3785,13 +3785,13 @@ arc_tempreserve_space(uint64_t reserve, 
 	 */
 	if (spa_get_random(10000) == 0) {
 		dprintf("forcing random failure\n");
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 #endif
 	if (reserve > arc_c/4 && !arc_no_grow)
 		arc_c = MIN(arc_c_max, reserve * 4);
 	if (reserve > arc_c)
-		return (ENOMEM);
+		return (SET_ERROR(ENOMEM));
 
 	/*
 	 * Don't count loaned bufs as in flight dirty data to prevent long
@@ -3824,7 +3824,7 @@ arc_tempreserve_space(uint64_t reserve, 
 		    arc_anon->arcs_lsize[ARC_BUFC_METADATA]>>10,
 		    arc_anon->arcs_lsize[ARC_BUFC_DATA]>>10,
 		    reserve>>10, arc_c>>10);
-		return (ERESTART);
+		return (SET_ERROR(ERESTART));
 	}
 	atomic_add_64(&arc_tempreserve, reserve);
 	return (0);
@@ -4518,7 +4518,7 @@ l2arc_read_done(zio_t *zio)
 		if (zio->io_error != 0) {
 			ARCSTAT_BUMP(arcstat_l2_io_error);
 		} else {
-			zio->io_error = EIO;
+			zio->io_error = SET_ERROR(EIO);
 		}
 		if (!equal)
 			ARCSTAT_BUMP(arcstat_l2_cksum_bad);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -598,7 +598,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio
 	ASSERT(!refcount_is_zero(&db->db_holds));
 
 	if (db->db_state == DB_NOFILL)
-		return (EIO);
+		return (SET_ERROR(EIO));
 
 	DB_DNODE_ENTER(db);
 	dn = DB_DNODE(db);
@@ -655,7 +655,7 @@ dbuf_read(dmu_buf_impl_t *db, zio_t *zio
 				cv_wait(&db->db_changed, &db->db_mtx);
 			}
 			if (db->db_state == DB_UNCACHED)
-				err = EIO;
+				err = SET_ERROR(EIO);
 		}
 		mutex_exit(&db->db_mtx);
 	}
@@ -1593,7 +1593,7 @@ dbuf_findbp(dnode_t *dn, int level, uint
 	if (level >= nlevels ||
 	    (blkid > (dn->dn_phys->dn_maxblkid >> (level * epbs)))) {
 		/* the buffer has no parent yet */
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 	} else if (level < nlevels-1) {
 		/* this block is referenced from an indirect block */
 		int err = dbuf_hold_impl(dn, level+1,
@@ -1844,7 +1844,7 @@ top:
 		err = dbuf_findbp(dn, level, blkid, fail_sparse, &parent, &bp);
 		if (fail_sparse) {
 			if (err == 0 && bp && BP_IS_HOLE(bp))
-				err = ENOENT;
+				err = SET_ERROR(ENOENT);
 			if (err) {
 				if (parent)
 					dbuf_rele(parent, NULL);
@@ -1941,7 +1941,7 @@ dbuf_spill_set_blksz(dmu_buf_t *db_fake,
 	dnode_t *dn;
 
 	if (db->db_blkid != DMU_SPILL_BLKID)
-		return (ENOTSUP);
+		return (SET_ERROR(ENOTSUP));
 	if (blksz == 0)
 		blksz = SPA_MINBLOCKSIZE;
 	if (blksz > SPA_MAXBLOCKSIZE)

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -21,7 +21,7 @@
 
 /*
  * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/zfs_context.h>
@@ -174,7 +174,7 @@ ddt_object_lookup(ddt_t *ddt, enum ddt_t
     ddt_entry_t *dde)
 {
 	if (!ddt_object_exists(ddt, type, class))
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 
 	return (ddt_ops[type]->ddt_op_lookup(ddt->ddt_os,
 	    ddt->ddt_object[type][class], dde));
@@ -235,7 +235,7 @@ ddt_object_info(ddt_t *ddt, enum ddt_typ
     dmu_object_info_t *doi)
 {
 	if (!ddt_object_exists(ddt, type, class))
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 
 	return (dmu_object_info(ddt->ddt_os, ddt->ddt_object[type][class],
 	    doi));
@@ -1157,5 +1157,5 @@ ddt_walk(spa_t *spa, ddt_bookmark_t *ddb
 		ddb->ddb_type = 0;
 	} while (++ddb->ddb_class < DDT_CLASSES);
 
-	return (ENOENT);
+	return (SET_ERROR(ENOENT));
 }

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -146,7 +146,7 @@ dmu_buf_hold(objset_t *os, uint64_t obje
 	db = dbuf_hold(dn, blkid, tag);
 	rw_exit(&dn->dn_struct_rwlock);
 	if (db == NULL) {
-		err = EIO;
+		err = SET_ERROR(EIO);
 	} else {
 		err = dbuf_read(db, NULL, db_flags);
 		if (err) {
@@ -177,9 +177,9 @@ dmu_set_bonus(dmu_buf_t *db_fake, int ne
 	dn = DB_DNODE(db);
 
 	if (dn->dn_bonus != db) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else if (newsize < 0 || newsize > db_fake->db_size) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else {
 		dnode_setbonuslen(dn, newsize, tx);
 		error = 0;
@@ -200,9 +200,9 @@ dmu_set_bonustype(dmu_buf_t *db_fake, dm
 	dn = DB_DNODE(db);
 
 	if (!DMU_OT_IS_VALID(type)) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else if (dn->dn_bonus != db) {
-		error = EINVAL;
+		error = SET_ERROR(EINVAL);
 	} else {
 		dnode_setbonus_type(dn, type, tx);
 		error = 0;
@@ -329,12 +329,12 @@ dmu_spill_hold_existing(dmu_buf_t *bonus
 	dn = DB_DNODE(db);
 
 	if (spa_version(dn->dn_objset->os_spa) < SPA_VERSION_SA) {
-		err = EINVAL;
+		err = SET_ERROR(EINVAL);
 	} else {
 		rw_enter(&dn->dn_struct_rwlock, RW_READER);
 
 		if (!dn->dn_have_spill) {
-			err = ENOENT;
+			err = SET_ERROR(ENOENT);
 		} else {
 			err = dmu_spill_hold_by_dnode(dn,
 			    DB_RF_HAVESTRUCT | DB_RF_CANFAIL, tag, dbp);
@@ -400,7 +400,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			    (longlong_t)dn->dn_object, dn->dn_datablksz,
 			    (longlong_t)offset, (longlong_t)length);
 			rw_exit(&dn->dn_struct_rwlock);
-			return (EIO);
+			return (SET_ERROR(EIO));
 		}
 		nblks = 1;
 	}
@@ -417,7 +417,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			rw_exit(&dn->dn_struct_rwlock);
 			dmu_buf_rele_array(dbp, nblks, tag);
 			zio_nowait(zio);
-			return (EIO);
+			return (SET_ERROR(EIO));
 		}
 		/* initiate async i/o */
 		if (read)
@@ -449,7 +449,7 @@ dmu_buf_hold_array_by_dnode(dnode_t *dn,
 			    db->db_state == DB_FILL)
 				cv_wait(&db->db_changed, &db->db_mtx);
 			if (db->db_state == DB_UNCACHED)
-				err = EIO;
+				err = SET_ERROR(EIO);
 			mutex_exit(&db->db_mtx);
 			if (err) {
 				dmu_buf_rele_array(dbp, nblks, tag);
@@ -1363,7 +1363,8 @@ dmu_sync_late_arrival(zio_t *pio, objset
 	dmu_tx_hold_space(tx, zgd->zgd_db->db_size);
 	if (dmu_tx_assign(tx, TXG_WAIT) != 0) {
 		dmu_tx_abort(tx);
-		return (EIO);	/* Make zl_get_data do txg_waited_synced() */
+		/* Make zl_get_data do txg_waited_synced() */
+		return (SET_ERROR(EIO));
 	}
 
 	dsa = kmem_alloc(sizeof (dmu_sync_arg_t), KM_SLEEP);
@@ -1448,7 +1449,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * This txg has already synced.  There's nothing to do.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 
 	if (txg <= spa_syncing_txg(os->os_spa)) {
@@ -1470,7 +1471,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * There's no need to log writes to freed blocks, so we're done.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (ENOENT);
+		return (SET_ERROR(ENOENT));
 	}
 
 	ASSERT(dr->dr_next == NULL || dr->dr_next->dr_txg < txg);
@@ -1499,7 +1500,7 @@ dmu_sync(zio_t *pio, uint64_t txg, dmu_s
 		 * have been dirtied since, or we would have cleared the state.
 		 */
 		mutex_exit(&db->db_mtx);
-		return (EALREADY);
+		return (SET_ERROR(EALREADY));
 	}
 
 	ASSERT(dr->dt.dl.dr_override_state == DR_NOT_OVERRIDDEN);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -136,7 +136,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons
 	int err = 0;
 
 	if (issig(JUSTLOOKING) && issig(FORREAL))
-		return (EINTR);
+		return (SET_ERROR(EINTR));
 
 	if (zb->zb_object != DMU_META_DNODE_OBJECT)
 		return (0);
@@ -159,7 +159,7 @@ diff_cb(spa_t *spa, zilog_t *zilog, cons
 		if (arc_read(NULL, spa, bp, arc_getbuf_func, &abuf,
 		    ZIO_PRIORITY_ASYNC_READ, ZIO_FLAG_CANFAIL,
 		    &aflags, zb) != 0)
-			return (EIO);
+			return (SET_ERROR(EIO));
 
 		blk = abuf->b_data;
 		for (i = 0; i < blksz >> DNODE_SHIFT; i++) {
@@ -195,7 +195,7 @@ dmu_diff(const char *tosnap_name, const 
 
 	if (strchr(tosnap_name, '@') == NULL ||
 	    strchr(fromsnap_name, '@') == NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_pool_hold(tosnap_name, FTAG, &dp);
 	if (error != 0)
@@ -218,7 +218,7 @@ dmu_diff(const char *tosnap_name, const 
 		dsl_dataset_rele(fromsnap, FTAG);
 		dsl_dataset_rele(tosnap, FTAG);
 		dsl_pool_rele(dp, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 
 	fromtxg = fromsnap->ds_phys->ds_creation_txg;

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_object.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,6 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 #include <sys/dmu.h>
@@ -90,7 +91,7 @@ dmu_object_claim(objset_t *os, uint64_t 
 	int err;
 
 	if (object == DMU_META_DNODE_OBJECT && !dmu_tx_private_ok(tx))
-		return (EBADF);
+		return (SET_ERROR(EBADF));
 
 	err = dnode_hold_impl(os, object, DNODE_MUST_BE_FREE, FTAG, &dn);
 	if (err)
@@ -112,7 +113,7 @@ dmu_object_reclaim(objset_t *os, uint64_
 	int err;
 
 	if (object == DMU_META_DNODE_OBJECT)
-		return (EBADF);
+		return (SET_ERROR(EBADF));
 
 	err = dnode_hold_impl(os, object, DNODE_MUST_BE_ALLOCATED,
 	    FTAG, &dn);

Modified: projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c
==============================================================================
--- projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c	Sat Apr  6 17:18:48 2013	(r249207)
+++ projects/camlock/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c	Sat Apr  6 17:20:22 2013	(r249208)
@@ -20,7 +20,7 @@
  */
 /*
  * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
- * Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013 by Delphix. All rights reserved.
  */
 
 /* Portions Copyright 2010 Robert Milkowski */
@@ -285,7 +285,7 @@ dmu_objset_open_impl(spa_t *spa, dsl_dat
 			kmem_free(os, sizeof (objset_t));
 			/* convert checksum errors into IO errors */
 			if (err == ECKSUM)
-				err = EIO;
+				err = SET_ERROR(EIO);
 			return (err);
 		}
 
@@ -498,10 +498,10 @@ dmu_objset_own(const char *name, dmu_obj
 		dsl_dataset_disown(ds, tag);
 	} else if (type != DMU_OST_ANY && type != (*osp)->os_phys->os_type) {
 		dsl_dataset_disown(ds, tag);
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 	} else if (!readonly && dsl_dataset_is_snapshot(ds)) {
 		dsl_dataset_disown(ds, tag);
-		return (EROFS);
+		return (SET_ERROR(EROFS));
 	}
 	return (err);
 }
@@ -714,14 +714,14 @@ dmu_objset_create_check(void *arg, dmu_t
 	int error;
 
 	if (strchr(doca->doca_name, '@') != NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_dir_hold(dp, doca->doca_name, FTAG, &pdd, &tail);
 	if (error != 0)
 		return (error);
 	if (tail == NULL) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 	dsl_dir_rele(pdd, FTAG);
 
@@ -795,19 +795,19 @@ dmu_objset_clone_check(void *arg, dmu_tx
 	dsl_pool_t *dp = dmu_tx_pool(tx);
 
 	if (strchr(doca->doca_clone, '@') != NULL)
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	error = dsl_dir_hold(dp, doca->doca_clone, FTAG, &pdd, &tail);
 	if (error != 0)
 		return (error);
 	if (tail == NULL) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EEXIST);
+		return (SET_ERROR(EEXIST));
 	}
 	/* You can't clone across pools. */
 	if (pdd->dd_pool != dp) {
 		dsl_dir_rele(pdd, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 	dsl_dir_rele(pdd, FTAG);
 
@@ -818,13 +818,13 @@ dmu_objset_clone_check(void *arg, dmu_tx
 	/* You can't clone across pools. */
 	if (origin->ds_dir->dd_pool != dp) {
 		dsl_dataset_rele(origin, FTAG);
-		return (EXDEV);
+		return (SET_ERROR(EXDEV));
 	}
 
 	/* You can only clone snapshots, not the head datasets. */
 	if (!dsl_dataset_is_snapshot(origin)) {
 		dsl_dataset_rele(origin, FTAG);
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 	}
 	dsl_dataset_rele(origin, FTAG);
 
@@ -1302,9 +1302,9 @@ dmu_objset_userspace_upgrade(objset_t *o
 	if (dmu_objset_userspace_present(os))
 		return (0);
 	if (!dmu_objset_userused_enabled(os))
-		return (ENOTSUP);
+		return (SET_ERROR(ENOTSUP));
 	if (dmu_objset_is_snapshot(os))
-		return (EINVAL);
+		return (SET_ERROR(EINVAL));
 
 	/*
 	 * We simply need to mark every object dirty, so that it will be
@@ -1320,7 +1320,7 @@ dmu_objset_userspace_upgrade(objset_t *o
 		int objerr;
 
 		if (issig(JUSTLOOKING) && issig(FORREAL))
-			return (EINTR);
+			return (SET_ERROR(EINTR));
 

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


More information about the svn-src-projects mailing list