Date: Sat, 6 Apr 2013 17:20:23 +0000 (UTC) From: Alexander Motin <mav@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: 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... Message-ID: <201304061720.r36HKNtW069501@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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@FreeBSD.org\n2006/09/11"] amdmi3 [label="Dmitry Marakasov\namdmi3@FreeBSD.org\n2008/06/19"] anray [label="Andrey Slusar\nanray@FreeBSD.org\n2005/12/11"] +antoine [label="Antoine Brodin\nantoine@FreeBSD.org\n2013/04/03"] araujo [label="Marcelo Araujo\naraujo@FreeBSD.org\n2007/04/26"] arved [label="Tilman Linneweh\narved@FreeBSD.org\n2002/10/15"] ashish [label="Ashish SHUKLA\nashish@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 ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201304061720.r36HKNtW069501>