Date: Sat, 30 Apr 2011 21:00:37 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r221272 - in projects/altix/sys: amd64/amd64 amd64/conf amd64/include arm/arm arm/conf boot/i386/boot2 boot/i386/common boot/i386/zfsboot boot/ia64/common boot/ia64/efi cam cddl/contrib... Message-ID: <201104302100.p3UL0b9B062111@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Sat Apr 30 21:00:36 2011 New Revision: 221272 URL: http://svn.freebsd.org/changeset/base/221272 Log: Merge svn+ssh://svn.freebsd.org/base/head@221271 Added: projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130.ini - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130.ini projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130_attach.c projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_eeprom.c - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130_eeprom.c projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_eeprom.h - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130_eeprom.h projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_phy.c - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130_phy.c projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130_phy.h - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130_phy.h projects/altix/sys/dev/ath/ath_hal/ar9001/ar9130reg.h - copied unchanged from r221271, head/sys/dev/ath/ath_hal/ar9001/ar9130reg.h projects/altix/sys/dev/vxge/ - copied from r221271, head/sys/dev/vxge/ projects/altix/sys/mips/atheros/ar724x_pci.c - copied unchanged from r221271, head/sys/mips/atheros/ar724x_pci.c projects/altix/sys/mips/conf/PB92 - copied unchanged from r221271, head/sys/mips/conf/PB92 projects/altix/sys/mips/conf/PB92.hints - copied unchanged from r221271, head/sys/mips/conf/PB92.hints projects/altix/sys/modules/vxge/ - copied from r221271, head/sys/modules/vxge/ Modified: projects/altix/sys/amd64/amd64/identcpu.c projects/altix/sys/amd64/amd64/minidump_machdep.c projects/altix/sys/amd64/conf/GENERIC projects/altix/sys/amd64/include/specialreg.h projects/altix/sys/arm/arm/dump_machdep.c projects/altix/sys/arm/arm/minidump_machdep.c projects/altix/sys/arm/arm/nexus.c projects/altix/sys/arm/conf/CAMBRIA projects/altix/sys/boot/i386/boot2/Makefile projects/altix/sys/boot/i386/common/drv.c projects/altix/sys/boot/i386/zfsboot/Makefile projects/altix/sys/boot/i386/zfsboot/zfsldr.S projects/altix/sys/boot/ia64/common/copy.c projects/altix/sys/boot/ia64/efi/efimd.c projects/altix/sys/cam/cam_xpt.c projects/altix/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/altix/sys/conf/NOTES projects/altix/sys/conf/files projects/altix/sys/conf/kern.pre.mk projects/altix/sys/conf/options projects/altix/sys/contrib/pf/net/if_pflog.c projects/altix/sys/contrib/pf/net/pf.c projects/altix/sys/contrib/pf/net/pf_ioctl.c projects/altix/sys/ddb/db_command.c projects/altix/sys/ddb/db_ps.c projects/altix/sys/dev/ath/ath_hal/ah.c projects/altix/sys/dev/ath/ath_hal/ah_devid.h projects/altix/sys/dev/ath/ath_hal/ah_eeprom_v14.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar2133.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_interrupts.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_power.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c projects/altix/sys/dev/ath/ath_hal/ar5416/ar5416reg.h projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/ath/if_ath_ahb.c projects/altix/sys/dev/e1000/if_igb.h projects/altix/sys/dev/fdt/fdtbus.c projects/altix/sys/dev/ixgbe/ixgbe.h projects/altix/sys/dev/md/md.c projects/altix/sys/dev/pci/pci.c projects/altix/sys/dev/puc/pucdata.c projects/altix/sys/dev/usb/net/if_mos.c projects/altix/sys/dev/usb/wlan/if_rum.c projects/altix/sys/dev/watchdog/watchdog.c projects/altix/sys/dev/xen/netfront/netfront.c projects/altix/sys/fs/ext2fs/ext2_alloc.c projects/altix/sys/fs/ext2fs/ext2_balloc.c projects/altix/sys/fs/ext2fs/ext2_dinode.h projects/altix/sys/fs/ext2fs/ext2_dir.h projects/altix/sys/fs/ext2fs/ext2_extern.h projects/altix/sys/fs/ext2fs/ext2_inode.c projects/altix/sys/fs/ext2fs/ext2_lookup.c projects/altix/sys/fs/ext2fs/ext2_readwrite.c projects/altix/sys/fs/ext2fs/ext2_vfsops.c projects/altix/sys/fs/ext2fs/ext2_vnops.c projects/altix/sys/fs/ext2fs/ext2fs.h projects/altix/sys/fs/ext2fs/inode.h projects/altix/sys/fs/nfsclient/nfs_clvfsops.c projects/altix/sys/i386/conf/GENERIC projects/altix/sys/i386/i386/identcpu.c projects/altix/sys/i386/i386/minidump_machdep.c projects/altix/sys/i386/include/specialreg.h projects/altix/sys/ia64/conf/ALTIX projects/altix/sys/ia64/conf/GENERIC projects/altix/sys/ia64/ia64/dump_machdep.c projects/altix/sys/ia64/ia64/nexus.c projects/altix/sys/kern/bus_if.m projects/altix/sys/kern/kern_shutdown.c projects/altix/sys/kern/subr_bus.c projects/altix/sys/kern/subr_rman.c projects/altix/sys/kern/vfs_subr.c projects/altix/sys/mips/atheros/apb.c projects/altix/sys/mips/atheros/ar71xx_chip.c projects/altix/sys/mips/atheros/ar71xx_cpudef.h projects/altix/sys/mips/atheros/ar71xx_pci.c projects/altix/sys/mips/atheros/ar724x_chip.c projects/altix/sys/mips/atheros/ar724xreg.h projects/altix/sys/mips/atheros/ar91xx_chip.c projects/altix/sys/mips/atheros/files.ar71xx projects/altix/sys/mips/conf/AR71XX projects/altix/sys/mips/conf/AR91XX_BASE projects/altix/sys/mips/mips/dump_machdep.c projects/altix/sys/mips/mips/mainbus.c projects/altix/sys/mips/mips/nexus.c projects/altix/sys/mips/rmi/xlr_pci.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/ath/Makefile projects/altix/sys/modules/ext2fs/Makefile projects/altix/sys/modules/if_carp/Makefile projects/altix/sys/net/if_enc.c projects/altix/sys/net/if_lagg.c projects/altix/sys/netinet/in_pcb.c projects/altix/sys/netinet/ip_carp.c projects/altix/sys/netinet/ip_icmp.c projects/altix/sys/netinet/ip_input.c projects/altix/sys/netinet/raw_ip.c projects/altix/sys/netinet/sctp_asconf.c projects/altix/sys/netinet/sctp_bsd_addr.c projects/altix/sys/netinet/sctp_input.c projects/altix/sys/netinet/sctp_output.c projects/altix/sys/netinet/sctp_pcb.c projects/altix/sys/netinet/sctp_sysctl.c projects/altix/sys/netinet/sctp_usrreq.c projects/altix/sys/netinet/sctp_var.h projects/altix/sys/netinet/sctputil.c projects/altix/sys/netinet/tcp_input.c projects/altix/sys/netinet/tcp_output.c projects/altix/sys/netinet/tcp_subr.c projects/altix/sys/netinet/tcp_syncache.c projects/altix/sys/netinet/tcp_timer.c projects/altix/sys/netinet/tcp_timewait.c projects/altix/sys/netinet/tcp_usrreq.c projects/altix/sys/netinet/tcp_var.h projects/altix/sys/netinet/udp_usrreq.c projects/altix/sys/netinet6/in6_pcb.c projects/altix/sys/netinet6/ip6_ipsec.c projects/altix/sys/netinet6/sctp6_usrreq.c projects/altix/sys/netinet6/udp6_usrreq.c projects/altix/sys/netipsec/ipsec_input.c projects/altix/sys/netipsec/ipsec_output.c projects/altix/sys/netipsec/key.c projects/altix/sys/netipsec/xform_ah.c projects/altix/sys/netipsec/xform_esp.c projects/altix/sys/netipsec/xform_ipcomp.c projects/altix/sys/netipsec/xform_ipip.c projects/altix/sys/nfsclient/nfs_vfsops.c projects/altix/sys/pc98/conf/GENERIC projects/altix/sys/powerpc/conf/GENERIC projects/altix/sys/powerpc/conf/GENERIC64 projects/altix/sys/powerpc/powerpc/dump_machdep.c projects/altix/sys/rpc/clnt.h projects/altix/sys/rpc/clnt_rc.c projects/altix/sys/rpc/clnt_vc.c projects/altix/sys/rpc/rpcb_clnt.c projects/altix/sys/sparc64/conf/GENERIC projects/altix/sys/sun4v/conf/GENERIC projects/altix/sys/sys/bus.h projects/altix/sys/sys/rman.h projects/altix/sys/sys/watchdog.h projects/altix/sys/ufs/ffs/ffs_vnops.c projects/altix/sys/x86/x86/dump_machdep.c projects/altix/sys/x86/x86/nexus.c projects/altix/sys/x86/x86/tsc.c Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/amd64/include/xen/ (props changed) projects/altix/sys/boot/i386/efi/ (props changed) projects/altix/sys/boot/ia64/efi/ (props changed) projects/altix/sys/boot/ia64/ski/ (props changed) projects/altix/sys/boot/powerpc/boot1.chrp/ (props changed) projects/altix/sys/boot/powerpc/ofw/ (props changed) projects/altix/sys/cddl/contrib/opensolaris/ (props changed) projects/altix/sys/conf/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/contrib/octeon-sdk/ (props changed) projects/altix/sys/contrib/pf/ (props changed) projects/altix/sys/contrib/x86emu/ (props changed) projects/altix/sys/kern/subr_busdma.c (props changed) Modified: projects/altix/sys/amd64/amd64/identcpu.c ============================================================================== --- projects/altix/sys/amd64/amd64/identcpu.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/amd64/amd64/identcpu.c Sat Apr 30 21:00:36 2011 (r221272) @@ -296,7 +296,7 @@ printcpuinfo(void) "\035<b28>" "\036<b29>" "\037<b30>" - "\040<b31>" + "\040HV" /* Hypervisor */ ); } Modified: projects/altix/sys/amd64/amd64/minidump_machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/minidump_machdep.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/amd64/amd64/minidump_machdep.c Sat Apr 30 21:00:36 2011 (r221272) @@ -27,6 +27,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_watchdog.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/conf.h> @@ -34,6 +36,9 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/kerneldump.h> #include <sys/msgbuf.h> +#ifdef SW_WATCHDOG +#include <sys/watchdog.h> +#endif #include <vm/vm.h> #include <vm/pmap.h> #include <machine/atomic.h> @@ -167,6 +172,9 @@ blk_write(struct dumperinfo *di, char *p report_progress(progress, dumpsize); counter &= (1<<24) - 1; } +#ifdef SW_WATCHDOG + wdog_kern_pat(WD_LASTVAL); +#endif if (ptr) { error = dump_write(di, ptr, 0, dumplo, len); if (error) Modified: projects/altix/sys/amd64/conf/GENERIC ============================================================================== --- projects/altix/sys/amd64/conf/GENERIC Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/amd64/conf/GENERIC Sat Apr 30 21:00:36 2011 (r221272) @@ -34,8 +34,8 @@ options UFS_ACL # Support for access options UFS_DIRHASH # Improve performance on big directories options UFS_GJOURNAL # Enable gjournal-based UFS journaling options MD_ROOT # MD is a potential root device -options NFSCLIENT # Network Filesystem Client -options NFSSERVER # Network Filesystem Server +options NFSCL # New Network Filesystem Client +options NFSD # New Network Filesystem Server options NFSLOCKD # Network Lock Manager options NFS_ROOT # NFS usable as /, requires NFSCLIENT options MSDOSFS # MSDOS Filesystem @@ -316,6 +316,7 @@ device udav # Davicom DM9601E USB device rum # Ralink Technology RT2501USB wireless NICs device uath # Atheros AR5523 wireless NICs device ural # Ralink Technology RT2500USB wireless NICs +device urtw # Realtek RTL8187B/L wireless NICs device zyd # ZyDAS zb1211/zb1211b wireless NICs # FireWire support Modified: projects/altix/sys/amd64/include/specialreg.h ============================================================================== --- projects/altix/sys/amd64/include/specialreg.h Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/amd64/include/specialreg.h Sat Apr 30 21:00:36 2011 (r221272) @@ -134,6 +134,7 @@ #define CPUID2_MOVBE 0x00400000 #define CPUID2_POPCNT 0x00800000 #define CPUID2_AESNI 0x02000000 +#define CPUID2_HV 0x80000000 /* * Important bits in the Thermal and Power Management flags Modified: projects/altix/sys/arm/arm/dump_machdep.c ============================================================================== --- projects/altix/sys/arm/arm/dump_machdep.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/arm/arm/dump_machdep.c Sat Apr 30 21:00:36 2011 (r221272) @@ -27,6 +27,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_watchdog.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/conf.h> @@ -35,6 +37,9 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/proc.h> #include <sys/kerneldump.h> +#ifdef SW_WATCHDOG +#include <sys/watchdog.h> +#endif #include <vm/vm.h> #include <vm/pmap.h> #include <machine/elf.h> @@ -189,6 +194,9 @@ cb_dumpdata(struct md_pa *mdp, int seqnr cpu_tlb_flushID_SE(0); cpu_cpwait(); } +#ifdef SW_WATCHDOG + wdog_kern_pat(WD_LASTVAL); +#endif error = dump_write(di, (void *)(pa - (pa & L1_ADDR_BITS)),0, dumplo, sz); if (error) Modified: projects/altix/sys/arm/arm/minidump_machdep.c ============================================================================== --- projects/altix/sys/arm/arm/minidump_machdep.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/arm/arm/minidump_machdep.c Sat Apr 30 21:00:36 2011 (r221272) @@ -29,6 +29,8 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD$"); +#include "opt_watchdog.h" + #include <sys/param.h> #include <sys/systm.h> #include <sys/conf.h> @@ -36,6 +38,9 @@ __FBSDID("$FreeBSD$"); #include <sys/kernel.h> #include <sys/kerneldump.h> #include <sys/msgbuf.h> +#ifdef SW_WATCHDOG +#include <sys/watchdog.h> +#endif #include <vm/vm.h> #include <vm/pmap.h> #include <machine/pmap.h> @@ -138,6 +143,9 @@ blk_write(struct dumperinfo *di, char *p counter &= (1<<22) - 1; } +#ifdef SW_WATCHDOG + wdog_kern_pat(WD_LASTVAL); +#endif if (ptr) { error = dump_write(di, ptr, 0, dumplo, len); if (error) Modified: projects/altix/sys/arm/arm/nexus.c ============================================================================== --- projects/altix/sys/arm/arm/nexus.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/arm/arm/nexus.c Sat Apr 30 21:00:36 2011 (r221272) @@ -138,10 +138,10 @@ nexus_attach(device_t dev) { mem_rman.rm_start = 0; - mem_rman.rm_end = ~0u; + mem_rman.rm_end = ~0ul; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; - if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0u)) + if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0)) panic("nexus_probe mem_rman"); /* Modified: projects/altix/sys/arm/conf/CAMBRIA ============================================================================== --- projects/altix/sys/arm/conf/CAMBRIA Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/arm/conf/CAMBRIA Sat Apr 30 21:00:36 2011 (r221272) @@ -144,7 +144,7 @@ device ath_rf5112 device ath_rf5413 # #device ath_ar5416 -#options AH_SUPPORT_AR5416 # NB: for 11n descriptor format +options AH_SUPPORT_AR5416 # NB: for 11n descriptor format #device ath_ar9160 #device ath_ar9280 Modified: projects/altix/sys/boot/i386/boot2/Makefile ============================================================================== --- projects/altix/sys/boot/i386/boot2/Makefile Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/i386/boot2/Makefile Sat Apr 30 21:00:36 2011 (r221272) @@ -32,6 +32,7 @@ CFLAGS= -Os \ -mno-align-long-strings \ -mrtd \ -mregparm=3 \ + -DUSE_XREAD \ -D${BOOT2_UFS} \ -DFLAGS=${BOOT_BOOT1_FLAGS} \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ Modified: projects/altix/sys/boot/i386/common/drv.c ============================================================================== --- projects/altix/sys/boot/i386/common/drv.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/i386/common/drv.c Sat Apr 30 21:00:36 2011 (r221272) @@ -26,7 +26,7 @@ __FBSDID("$FreeBSD$"); #include "rbx.h" #include "util.h" #include "drv.h" -#ifndef GPT +#ifdef USE_XREAD #include "xreadorg.h" #endif @@ -58,7 +58,7 @@ drvsize(struct dsk *dskp) } #endif /* GPT */ -#ifdef GPT +#ifndef USE_XREAD static struct { uint16_t len; uint16_t count; @@ -66,7 +66,7 @@ static struct { uint16_t seg; uint64_t lba; } packet; -#endif /* GPT */ +#endif int drvread(struct dsk *dskp, void *buf, daddr_t lba, unsigned nblk) @@ -75,7 +75,7 @@ drvread(struct dsk *dskp, void *buf, dad if (!OPT_CHECK(RBX_QUIET)) printf("%c\b", c = c << 8 | c >> 24); -#ifdef GPT +#ifndef USE_XREAD packet.len = 0x10; packet.count = nblk; packet.off = VTOPOFF(buf); @@ -87,7 +87,7 @@ drvread(struct dsk *dskp, void *buf, dad v86.edx = dskp->drive; v86.ds = VTOPSEG(&packet); v86.esi = VTOPOFF(&packet); -#else /* !GPT */ +#else /* USE_XREAD */ v86.ctl = V86_ADDR | V86_CALLF | V86_FLAGS; v86.addr = XREADORG; /* call to xread in boot1 */ v86.es = VTOPSEG(buf); @@ -95,7 +95,7 @@ drvread(struct dsk *dskp, void *buf, dad v86.ebx = VTOPOFF(buf); v86.ecx = lba >> 32; v86.edx = nblk << 8 | dskp->drive; -#endif /* !GPT */ +#endif /* USE_XREAD */ v86int(); if (V86_CY(v86.efl)) { printf("%s: error %u lba %u\n", Modified: projects/altix/sys/boot/i386/zfsboot/Makefile ============================================================================== --- projects/altix/sys/boot/i386/zfsboot/Makefile Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/i386/zfsboot/Makefile Sat Apr 30 21:00:36 2011 (r221272) @@ -6,9 +6,6 @@ FILES= zfsboot NM?= nm -# A value of 0x80 enables LBA support. -BOOT_BOOT1_FLAGS?= 0x80 - BOOT_COMCONSOLE_PORT?= 0x3f8 BOOT_COMCONSOLE_SPEED?= 9600 B2SIOFMT?= 0x3 @@ -25,7 +22,6 @@ CFLAGS= -DBOOTPROG=\"zfsboot\" \ -mno-align-long-strings \ -mrtd \ -DBOOT2 \ - -DFLAGS=${BOOT_BOOT1_FLAGS} \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ -DSIOFMT=${B2SIOFMT} \ -DSIOSPD=${BOOT_COMCONSOLE_SPEED} \ @@ -64,8 +60,7 @@ zfsldr.out: zfsldr.o ${LD} ${LDFLAGS} -e start -Ttext ${ORG1} -o ${.TARGET} zfsldr.o CLEANFILES+= zfsboot2 zfsboot.ld zfsboot.ldr zfsboot.bin zfsboot.out \ - zfsboot.o zfsboot.s zfsboot.s.tmp xreadorg.h sio.o cons.o \ - drv.o util.o + zfsboot.o zfsboot.s zfsboot.s.tmp sio.o cons.o drv.o util.o # We currently allow 65536 bytes for zfsboot - in practice it could be # any size up to 3.5Mb but keeping it fixed size simplifies zfsldr. @@ -92,20 +87,13 @@ zfsboot.out: ${BTXCRT} zfsboot.o sio.o d zfsboot.o: zfsboot.s -SRCS= zfsboot.c xreadorg.h +SRCS= zfsboot.c -zfsboot.s: zfsboot.c xreadorg.h ${.CURDIR}/../../zfs/zfsimpl.c +zfsboot.s: zfsboot.c ${.CURDIR}/../../zfs/zfsimpl.c ${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s rm -f zfsboot.s.tmp -xreadorg.h: zfsldr.out - ${NM} -t d ${.ALLSRC} | awk '/([0-9])+ T xread/ \ - { x = $$1 - ORG1; \ - printf("#define XREADORG %#x\n", REL1 + x) }' \ - ORG1=`printf "%d" ${ORG1}` \ - REL1=`printf "%d" ${REL1}` > ${.TARGET} - .if ${MACHINE_CPUARCH} == "amd64" beforedepend zfsboot.s: machine CLEANFILES+= machine Modified: projects/altix/sys/boot/i386/zfsboot/zfsldr.S ============================================================================== --- projects/altix/sys/boot/i386/zfsboot/zfsldr.S Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/i386/zfsboot/zfsldr.S Sat Apr 30 21:00:36 2011 (r221272) @@ -30,16 +30,12 @@ .set PRT_NUM,0x4 # Partitions .set PRT_BSD,0xa5 # Partition type -/* Flag Bits */ - .set FL_PACKET,0x80 # Packet mode - /* Misc. Constants */ .set SIZ_PAG,0x1000 # Page size .set SIZ_SEC,0x200 # Sector size .set NSECT,0x80 .globl start - .globl xread .code16 start: jmp main # Start recognizably @@ -49,7 +45,7 @@ start: jmp main # Start recognizably * FAT disks have this at the start of their MBR. While normal BIOS's will * work fine without this section, IBM's El Torito emulation "fixes" up the * BPB by writing into the memory copy of the MBR. Rather than have data - * written into our xread routine, we'll define a BPB to work around it. + * written into our code, we'll define a BPB to work around it. * The data marked with (T) indicates a field required for a ThinkPad to * recognize the disk and (W) indicates fields written from IBM BIOS code. * The use of the BPB is based on what OpenBSD and NetBSD implemented in @@ -80,34 +76,7 @@ ebpb: .byte 0 # BIOS physical drive nu .org 0x25,0x90 /* - * Trampoline used by boot2 to call read to read data from the disk via - * the BIOS. Call with: - * - * %ecx:%eax - long - LBA to read in - * %es:(%bx) - caddr_t - buffer to read data into - * %dl - byte - drive to read from - * %dh - byte - num sectors to read - */ - -xread: push %ss # Address - pop %ds # data -/* - * Setup an EDD disk packet and pass it to read - */ -xread.1: pushl %ecx # Starting absolute block - pushl %eax # block number - push %es # Address of - push %bx # transfer buffer - xor %ax,%ax # Number of - movb %dh,%al # blocks to - push %ax # transfer - push $0x10 # Size of packet - mov %sp,%bp # Packet pointer - callw read # Read from disk - lea 0x10(%bp),%sp # Clear stack - lret # To far caller -/* - * Load the rest of boot2 and BTX up, copy the parts to the right locations, + * Load the rest of zfsboot2 and BTX up, copy the parts to the right locations, * and start it all up. */ @@ -181,7 +150,7 @@ main.4: xor %dx,%dx # Partition:drive * itself to 0x9000 - doing it in this order means that none of the * memcpy regions overlap which would corrupt the copy. Normally, BTX * clients start at MEM_USR, or 0xa000, but when we use btxld to - * create boot2, we use an entry point of 0x2000. That entry point is + * create zfsboot2, we use an entry point of 0x2000. That entry point is * relative to MEM_USR; thus boot2.bin starts at 0xc000. * * The load area and the target area for the client overlap so we have @@ -241,15 +210,29 @@ seta20.3: sti # Enable interrupts /* - * Trampoline used to call read from within boot1. + * Trampoline used to call read from within zfsldr. Sets up an EDD + * packet on the stack and passes it to read. + * + * %eax - int - LBA to read in relative to partition start + * %dl - byte - drive to read from + * %dh - byte - num sectors to read + * %si - ptr - MBR partition entry */ nread: xor %eax,%eax # Sector offset in partition -nread.1: mov $MEM_BUF,%bx # Transfer buffer - xor %ecx,%ecx # Get +nread.1: xor %ecx,%ecx # Get addl 0x8(%si),%eax # LBA adc $0,%ecx - push %cs # Read from - callw xread.1 # disk + pushl %ecx # Starting absolute block + pushl %eax # block number + push %es # Address of + push $MEM_BUF # transfer buffer + xor %ax,%ax # Number of + movb %dh,%al # blocks to + push %ax # transfer + push $0x10 # Size of packet + mov %sp,%bp # Packet pointer + callw read # Read from disk + lea 0x10(%bp),%sp # Clear stack jnc return # If success, return mov $msg_read,%si # Otherwise, set the error # message and fall through to @@ -293,9 +276,7 @@ return: retw # To caller * %dl - byte - drive number * stack - 10 bytes - EDD Packet */ -read: testb $FL_PACKET,%cs:MEM_REL+flags-start # LBA support enabled? - jz read.1 # No, use CHS - cmpb $0x80,%dl # Hard drive? +read: cmpb $0x80,%dl # Hard drive? jb read.1 # No, use CHS mov $0x55aa,%bx # Magic push %dx # Save @@ -311,73 +292,9 @@ read: testb $FL_PACKET,%cs:MEM_REL+flag movb $0x42,%ah # BIOS: Extended int $0x13 # read retw # To caller -#if 0 -read.1: push %dx # Save - movb $0x8,%ah # BIOS: Get drive - int $0x13 # parameters - movb %dh,%ch # Max head number - pop %dx # Restore - jc return # If error - andb $0x3f,%cl # Sectors per track - jz ereturn # If zero - cli # Disable interrupts - mov 0x8(%bp),%eax # Get LBA - push %dx # Save - movzbl %cl,%ebx # Divide by - xor %edx,%edx # sectors - div %ebx # per track - movb %ch,%bl # Max head number - movb %dl,%ch # Sector number - inc %bx # Divide by - xorb %dl,%dl # number - div %ebx # of heads - movb %dl,%bh # Head number - pop %dx # Restore - cmpl $0x3ff,%eax # Cylinder number supportable? - sti # Enable interrupts - ja ereturn # No, return an error - xchgb %al,%ah # Set up cylinder - rorb $0x2,%al # number - orb %ch,%al # Merge - inc %ax # sector - xchg %ax,%cx # number - movb %bh,%dh # Head number - subb %ah,%al # Sectors this track - mov 0x2(%bp),%ah # Blocks to read - cmpb %ah,%al # To read - jb read.2 # this -#ifdef TRACK_AT_A_TIME - movb %ah,%al # track -#else - movb $1,%al # one sector -#endif -read.2: mov $0x5,%di # Try count -read.3: les 0x4(%bp),%bx # Transfer buffer - push %ax # Save - movb $0x2,%ah # BIOS: Read - int $0x13 # from disk - pop %bx # Restore - jnc read.4 # If success - dec %di # Retry? - jz read.6 # No - xorb %ah,%ah # BIOS: Reset - int $0x13 # disk system - xchg %bx,%ax # Block count - jmp read.3 # Continue -read.4: movzbw %bl,%ax # Sectors read - add %ax,0x8(%bp) # Adjust - jnc read.5 # LBA, - incw 0xa(%bp) # transfer -read.5: shlb %bl # buffer - add %bl,0x5(%bp) # pointer, - sub %al,0x2(%bp) # block count - ja read.1 # If not done -read.6: retw # To caller -#else read.1: mov $msg_chs,%si jmp error msg_chs: .asciz "CHS not supported" -#endif /* Messages */ @@ -386,8 +303,6 @@ msg_part: .asciz "Boot" prompt: .asciz " error\r\n" -flags: .byte FLAGS # Flags - .org PRT_OFF,0x90 /* Partition table */ Modified: projects/altix/sys/boot/ia64/common/copy.c ============================================================================== --- projects/altix/sys/boot/ia64/common/copy.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/ia64/common/copy.c Sat Apr 30 21:00:36 2011 (r221272) @@ -29,6 +29,7 @@ __FBSDID("$FreeBSD$"); #include <stand.h> #include <machine/param.h> +#include <machine/pte.h> #include "libia64.h" @@ -40,6 +41,7 @@ uint32_t ia64_pgtblsz; static int pgtbl_extend(u_int idx) { + vm_paddr_t pa; uint64_t *pgtbl; uint32_t pgtblsz; u_int pot; @@ -65,9 +67,10 @@ pgtbl_extend(u_int idx) pgtblsz <<= 1; /* Allocate naturally aligned memory. */ - pgtbl = (void *)ia64_platform_alloc(0, pgtblsz); - if (pgtbl == NULL) + pa = ia64_platform_alloc(0, pgtblsz); + if (pa == ~0UL) return (ENOMEM); + pgtbl = (void *)pa; /* Initialize new page table. */ if (ia64_pgtbl != NULL && ia64_pgtbl != pgtbl) @@ -85,7 +88,7 @@ pgtbl_extend(u_int idx) void * ia64_va2pa(vm_offset_t va, size_t *len) { - uint64_t pa; + uint64_t pa, pte; u_int idx, ofs; int error; @@ -111,16 +114,18 @@ ia64_va2pa(vm_offset_t va, size_t *len) } ofs = va & IA64_PBVM_PAGE_MASK; - pa = ia64_pgtbl[idx]; - if (pa == 0) { + pte = ia64_pgtbl[idx]; + if ((pte & PTE_PRESENT) == 0) { pa = ia64_platform_alloc(va - ofs, IA64_PBVM_PAGE_SIZE); - if (pa == 0) { + if (pa == ~0UL) { error = ENOMEM; goto fail; } - ia64_pgtbl[idx] = pa; + pte = PTE_AR_RWX | PTE_DIRTY | PTE_ACCESSED | PTE_PRESENT; + pte |= (pa & PTE_PPN_MASK); + ia64_pgtbl[idx] = pte; } - pa += ofs; + pa = (pte & PTE_PPN_MASK) + ofs; /* We can not cross page boundaries (in general). */ if (*len + ofs > IA64_PBVM_PAGE_SIZE) Modified: projects/altix/sys/boot/ia64/efi/efimd.c ============================================================================== --- projects/altix/sys/boot/ia64/efi/efimd.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/boot/ia64/efi/efimd.c Sat Apr 30 21:00:36 2011 (r221272) @@ -90,6 +90,10 @@ ia64_efi_memmap_update(void) return (TRUE); } +/* + * Returns 0 on failure. Successful allocations return an address + * larger or equal to IA64_EFI_ALLOC_BOUNDARY. + */ static vm_paddr_t ia64_efi_alloc(vm_size_t sz) { @@ -144,11 +148,12 @@ ia64_efi_alloc(vm_size_t sz) vm_paddr_t ia64_platform_alloc(vm_offset_t va, vm_size_t sz) { + vm_paddr_t pa; if (va == 0) { /* Page table itself. */ if (sz > IA64_EFI_PGTBLSZ_MAX) - return (0); + return (~0UL); if (ia64_efi_pgtbl == 0) ia64_efi_pgtbl = ia64_efi_alloc(IA64_EFI_PGTBLSZ_MAX); if (ia64_efi_pgtbl != 0) @@ -156,7 +161,7 @@ ia64_platform_alloc(vm_offset_t va, vm_s return (ia64_efi_pgtbl); } else if (va < IA64_PBVM_BASE) { /* Should not happen. */ - return (0); + return (~0UL); } /* Loader virtual memory page. */ @@ -169,7 +174,8 @@ ia64_platform_alloc(vm_offset_t va, vm_s return (ia64_efi_chunk + va); /* Allocate a page at a time when we go beyond the chunk. */ - return (ia64_efi_alloc(sz)); + pa = ia64_efi_alloc(sz); + return ((pa == 0) ? ~0UL : pa); } void Modified: projects/altix/sys/cam/cam_xpt.c ============================================================================== --- projects/altix/sys/cam/cam_xpt.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/cam/cam_xpt.c Sat Apr 30 21:00:36 2011 (r221272) @@ -2328,19 +2328,18 @@ xpt_action(union ccb *start_ccb) void xpt_action_default(union ccb *start_ccb) { +#ifdef CAMDEBUG + char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1]; +#endif + struct cam_path *path; - CAM_DEBUG(start_ccb->ccb_h.path, CAM_DEBUG_TRACE, ("xpt_action_default\n")); + path = start_ccb->ccb_h.path; + CAM_DEBUG(path, CAM_DEBUG_TRACE, ("xpt_action_default\n")); switch (start_ccb->ccb_h.func_code) { case XPT_SCSI_IO: { struct cam_ed *device; -#ifdef CAMDEBUG - char cdb_str[(SCSI_MAX_CDBLEN * 3) + 1]; - struct cam_path *path; - - path = start_ccb->ccb_h.path; -#endif /* * For the sake of compatibility with SCSI-1 @@ -2358,7 +2357,7 @@ xpt_action_default(union ccb *start_ccb) * This means that this code will be exercised while probing * devices with an ANSI revision greater than 2. */ - device = start_ccb->ccb_h.path->device; + device = path->device; if (device->protocol_version <= SCSI_REV_2 && start_ccb->ccb_h.target_lun < 8 && (start_ccb->ccb_h.flags & CAM_CDB_POINTER) == 0) { @@ -2382,13 +2381,16 @@ xpt_action_default(union ccb *start_ccb) case XPT_ATA_IO: if (start_ccb->ccb_h.func_code == XPT_ATA_IO) { start_ccb->ataio.resid = 0; + CAM_DEBUG(path, CAM_DEBUG_CDB,("%s. ACB: %s\n", + ata_op_string(&start_ccb->ataio.cmd), + ata_cmd_string(&start_ccb->ataio.cmd, + cdb_str, sizeof(cdb_str)))); } /* FALLTHROUGH */ case XPT_RESET_DEV: case XPT_ENG_EXEC: case XPT_SMP_IO: { - struct cam_path *path = start_ccb->ccb_h.path; int frozen; frozen = cam_ccbq_insert_ccb(&path->device->ccbq, start_ccb); @@ -2427,7 +2429,7 @@ xpt_action_default(union ccb *start_ccb) break; } #endif - sim = start_ccb->ccb_h.path->bus->sim; + sim = path->bus->sim; (*(sim->sim_action))(sim, start_ccb); break; } @@ -2495,7 +2497,7 @@ xpt_action_default(union ccb *start_ccb) { struct cam_sim *sim; - sim = start_ccb->ccb_h.path->bus->sim; + sim = path->bus->sim; (*(sim->sim_action))(sim, start_ccb); break; } @@ -2503,20 +2505,19 @@ xpt_action_default(union ccb *start_ccb) { struct cam_sim *sim; - sim = start_ccb->ccb_h.path->bus->sim; + sim = path->bus->sim; (*(sim->sim_action))(sim, start_ccb); break; } case XPT_PATH_STATS: - start_ccb->cpis.last_reset = - start_ccb->ccb_h.path->bus->last_reset; + start_ccb->cpis.last_reset = path->bus->last_reset; start_ccb->ccb_h.status = CAM_REQ_CMP; break; case XPT_GDEV_TYPE: { struct cam_ed *dev; - dev = start_ccb->ccb_h.path->device; + dev = path->device; if ((dev->flags & CAM_DEV_UNCONFIGURED) != 0) { start_ccb->ccb_h.status = CAM_DEV_NOT_THERE; } else { @@ -2540,7 +2541,7 @@ xpt_action_default(union ccb *start_ccb) { struct cam_ed *dev; - dev = start_ccb->ccb_h.path->device; + dev = path->device; if ((dev->flags & CAM_DEV_UNCONFIGURED) != 0) { start_ccb->ccb_h.status = CAM_DEV_NOT_THERE; } else { @@ -2549,8 +2550,8 @@ xpt_action_default(union ccb *start_ccb) struct cam_et *tar; cgds = &start_ccb->cgds; - bus = cgds->ccb_h.path->bus; - tar = cgds->ccb_h.path->target; + bus = path->bus; + tar = path->target; cgds->dev_openings = dev->ccbq.dev_openings; cgds->dev_active = dev->ccbq.dev_active; cgds->devq_openings = dev->ccbq.devq_openings; @@ -2580,7 +2581,7 @@ xpt_action_default(union ccb *start_ccb) /* * Don't want anyone mucking with our data. */ - device = start_ccb->ccb_h.path->device; + device = path->device; periph_head = &device->periphs; cgdl = &start_ccb->cgdl; @@ -2697,7 +2698,7 @@ xpt_action_default(union ccb *start_ccb) csa = &start_ccb->csa; added = csa->event_enable; - async_head = &csa->ccb_h.path->device->asyncs; + async_head = &path->device->asyncs; /* * If there is already an entry for us, simply @@ -2720,7 +2721,7 @@ xpt_action_default(union ccb *start_ccb) if (csa->event_enable == 0) { SLIST_REMOVE(async_head, cur_entry, async_node, links); - xpt_release_device(csa->ccb_h.path->device); + xpt_release_device(path->device); free(cur_entry, M_CAMXPT); } else { cur_entry->event_enable = csa->event_enable; @@ -2737,7 +2738,7 @@ xpt_action_default(union ccb *start_ccb) cur_entry->callback_arg = csa->callback_arg; cur_entry->callback = csa->callback; SLIST_INSERT_HEAD(async_head, cur_entry, links); - xpt_acquire_device(csa->ccb_h.path->device); + xpt_acquire_device(path->device); } start_ccb->ccb_h.status = CAM_REQ_CMP; break; @@ -2748,7 +2749,7 @@ xpt_action_default(union ccb *start_ccb) struct cam_ed *dev; crs = &start_ccb->crs; - dev = crs->ccb_h.path->device; + dev = path->device; if (dev == NULL) { crs->ccb_h.status = CAM_DEV_NOT_THERE; @@ -2760,11 +2761,11 @@ xpt_action_default(union ccb *start_ccb) if (INQ_DATA_TQ_ENABLED(&dev->inq_data)) { /* Don't ever go below one opening */ if (crs->openings > 0) { - xpt_dev_ccbq_resize(crs->ccb_h.path, + xpt_dev_ccbq_resize(path, crs->openings); if (bootverbose) { - xpt_print(crs->ccb_h.path, + xpt_print(path, "tagged openings now %d\n", crs->openings); } @@ -2826,7 +2827,7 @@ xpt_action_default(union ccb *start_ccb) } if ((start_ccb->ccb_h.flags & CAM_DEV_QFREEZE) == 0) { - xpt_release_devq_rl(crs->ccb_h.path, /*runlevel*/ + xpt_release_devq_rl(path, /*runlevel*/ (crs->release_flags & RELSIM_RELEASE_RUNLEVEL) ? crs->release_timeout : 0, /*count*/1, /*run_queue*/TRUE); @@ -2872,7 +2873,7 @@ xpt_action_default(union ccb *start_ccb) { struct ccb_relsim *crs = &start_ccb->crs; - xpt_freeze_devq_rl(crs->ccb_h.path, /*runlevel*/ + xpt_freeze_devq_rl(path, /*runlevel*/ (crs->release_flags & RELSIM_RELEASE_RUNLEVEL) ? crs->release_timeout : 0, /*count*/1); start_ccb->ccb_h.status = CAM_REQ_CMP; @@ -2880,7 +2881,7 @@ xpt_action_default(union ccb *start_ccb) } case XPT_NOOP: if ((start_ccb->ccb_h.flags & CAM_DEV_QFREEZE) != 0) - xpt_freeze_devq(start_ccb->ccb_h.path, 1); + xpt_freeze_devq(path, 1); start_ccb->ccb_h.status = CAM_REQ_CMP; break; default: Modified: projects/altix/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S ============================================================================== --- projects/altix/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/cddl/contrib/opensolaris/common/atomic/ia64/opensolaris_atomic.S Sat Apr 30 21:00:36 2011 (r221272) @@ -39,7 +39,7 @@ ENTRY(atomic_cas_32, 3) cmpxchg4.acq r8 = [r32], r34, ar.ccv ;; br.ret.sptk rp -END(atomic_cas_64) +END(atomic_cas_32) /* * uint64_t atomic_cas_64(volatile uint64_t *p, uint64_t cmp, uint64_t v) Modified: projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c ============================================================================== --- projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c Sat Apr 30 21:00:36 2011 (r221272) @@ -21,6 +21,9 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ #include <sys/dmu.h> #include <sys/dmu_impl.h> @@ -851,61 +854,6 @@ guid_compare(const void *arg1, const voi return (0); } -/* - * This function is a callback used by dmu_objset_find() (which - * enumerates the object sets) to build an avl tree that maps guids - * to datasets. The resulting table is used when processing DRR_WRITE_BYREF - * send stream records. These records, which are used in dedup'ed - * streams, do not contain data themselves, but refer to a copy - * of the data block that has already been written because it was - * earlier in the stream. That previous copy is identified by the - * guid of the dataset with the referenced data. - */ -int -find_ds_by_guid(const char *name, void *arg) -{ - avl_tree_t *guid_map = arg; - dsl_dataset_t *ds, *snapds; - guid_map_entry_t *gmep; - dsl_pool_t *dp; - int err; - uint64_t lastobj, firstobj; - - if (dsl_dataset_hold(name, FTAG, &ds) != 0) - return (0); - - dp = ds->ds_dir->dd_pool; - rw_enter(&dp->dp_config_rwlock, RW_READER); - firstobj = ds->ds_dir->dd_phys->dd_origin_obj; - lastobj = ds->ds_phys->ds_prev_snap_obj; - - while (lastobj != firstobj) { - err = dsl_dataset_hold_obj(dp, lastobj, guid_map, &snapds); - if (err) { - /* - * Skip this snapshot and move on. It's not - * clear why this would ever happen, but the - * remainder of the snapshot streadm can be - * processed. - */ - rw_exit(&dp->dp_config_rwlock); - dsl_dataset_rele(ds, FTAG); - return (0); - } - - gmep = kmem_alloc(sizeof (guid_map_entry_t), KM_SLEEP); - gmep->guid = snapds->ds_phys->ds_guid; - gmep->gme_ds = snapds; - avl_add(guid_map, gmep); - lastobj = snapds->ds_phys->ds_prev_snap_obj; - } - - rw_exit(&dp->dp_config_rwlock); - dsl_dataset_rele(ds, FTAG); - - return (0); -} - static void free_guid_map_onexit(void *arg) { @@ -1413,9 +1361,6 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, avl_create(ra.guid_to_ds_map, guid_compare, sizeof (guid_map_entry_t), offsetof(guid_map_entry_t, avlnode)); - (void) dmu_objset_find(drc->drc_top_ds, find_ds_by_guid, - (void *)ra.guid_to_ds_map, - DS_FIND_CHILDREN); ra.err = zfs_onexit_add_cb(minor, free_guid_map_onexit, ra.guid_to_ds_map, action_handlep); @@ -1427,6 +1372,8 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, if (ra.err) goto out; } + + drc->drc_guid_to_ds_map = ra.guid_to_ds_map; } /* @@ -1565,6 +1512,30 @@ recv_end_sync(void *arg1, void *arg2, dm } static int +add_ds_to_guidmap(avl_tree_t *guid_map, dsl_dataset_t *ds) +{ + dsl_pool_t *dp = ds->ds_dir->dd_pool; + uint64_t snapobj = ds->ds_phys->ds_prev_snap_obj; + dsl_dataset_t *snapds; + guid_map_entry_t *gmep; + int err; + + ASSERT(guid_map != NULL); + + rw_enter(&dp->dp_config_rwlock, RW_READER); + err = dsl_dataset_hold_obj(dp, snapobj, guid_map, &snapds); + if (err == 0) { + gmep = kmem_alloc(sizeof (guid_map_entry_t), KM_SLEEP); + gmep->guid = snapds->ds_phys->ds_guid; + gmep->gme_ds = snapds; + avl_add(guid_map, gmep); + } + + rw_exit(&dp->dp_config_rwlock); + return (err); +} + +static int dmu_recv_existing_end(dmu_recv_cookie_t *drc) { struct recvendsyncarg resa; @@ -1604,6 +1575,8 @@ dmu_recv_existing_end(dmu_recv_cookie_t out: mutex_exit(&ds->ds_recvlock); + if (err == 0 && drc->drc_guid_to_ds_map != NULL) + (void) add_ds_to_guidmap(drc->drc_guid_to_ds_map, ds); dsl_dataset_disown(ds, dmu_recv_tag); (void) dsl_dataset_destroy(drc->drc_real_ds, dmu_recv_tag, B_FALSE); return (err); @@ -1633,6 +1606,8 @@ dmu_recv_new_end(dmu_recv_cookie_t *drc) /* clean up the fs we just recv'd into */ (void) dsl_dataset_destroy(ds, dmu_recv_tag, B_FALSE); } else { + if (drc->drc_guid_to_ds_map != NULL) + (void) add_ds_to_guidmap(drc->drc_guid_to_ds_map, ds); /* release the hold from dmu_recv_begin */ dsl_dataset_disown(ds, dmu_recv_tag); } Modified: projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h ============================================================================== --- projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h Sat Apr 30 21:00:36 2011 (r221272) @@ -21,6 +21,9 @@ /* * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. */ +/* + * Copyright 2011 Nexenta Systems, Inc. All rights reserved. + */ /* Portions Copyright 2010 Robert Milkowski */ @@ -718,6 +721,7 @@ typedef struct dmu_recv_cookie { char *drc_top_ds; boolean_t drc_newfs; boolean_t drc_force; + struct avl_tree *drc_guid_to_ds_map; } dmu_recv_cookie_t; int dmu_recv_begin(char *tofs, char *tosnap, char *topds, struct drr_begin *, Modified: projects/altix/sys/conf/NOTES ============================================================================== --- projects/altix/sys/conf/NOTES Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/conf/NOTES Sat Apr 30 21:00:36 2011 (r221272) @@ -2094,6 +2094,7 @@ device nxge # Neterion Xframe 10GbE Se device ti # Alteon Networks Tigon I/II gigabit Ethernet device txp # 3Com 3cR990 (``Typhoon'') device vx # 3Com 3c590, 3c595 (``Vortex'') +device vxge # Exar/Neterion XFrame 3100 10GbE # PCI FDDI NICs. device fpa @@ -2729,6 +2730,9 @@ device uath # Ralink Technology RT2500USB wireless driver device ural # +# Realtek RTL8187B/L wireless driver +device urtw +# # ZyDas ZD1211/ZD1211B wireless driver device zyd Modified: projects/altix/sys/conf/files ============================================================================== --- projects/altix/sys/conf/files Sat Apr 30 20:49:00 2011 (r221271) +++ projects/altix/sys/conf/files Sat Apr 30 21:00:36 2011 (r221272) @@ -757,6 +757,14 @@ dev/ath/ath_hal/ar5416/ar5416_reset.c \ dev/ath/ath_hal/ar5416/ar5416_xmit.c \ optional ath_hal | ath_ar5416 | ath_ar9160 | ath_ar9280 | ath_ar9285 \ compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" +# ar9130 (depends upon ar5416) - also requires AH_SUPPORT_AR9130 +dev/ath/ath_hal/ar9001/ar9130_attach.c optional ath_hal | ath_ar9130 \ + compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" +dev/ath/ath_hal/ar9001/ar9130_phy.c optional ath_hal | ath_ar9130 \ + compile-with "${NORMAL_C} -I$S/dev/ath -I$S/dev/ath/ath_hal" +dev/ath/ath_hal/ar9001/ar9130_eeprom.c optional ath_hal | ath_ar9130 \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201104302100.p3UL0b9B062111>