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