Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 May 2010 13:43:08 GMT
From:      Ana Kukec <anchie@FreeBSD.org>
To:        Perforce Change Reviews <perforce@FreeBSD.org>
Subject:   PERFORCE change 178442 for review
Message-ID:  <201005181343.o4IDh8ZG039100@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@178442?ac=10

Change 178442 by anchie@anchie_malimis on 2010/05/18 13:42:28

	IFC @178439	

Affected files ...

.. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/apic_vector.S#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/exception.S#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/pmap.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/trap.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/identcpu.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#10 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/include/disassem.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/arm/include/md_var.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/boot/common/module.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/boot/forth/loader.conf.5#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_sg.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/boot/zfs/zfsimpl.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/dnlc.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/sysmacros.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_zfetch.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg_impl.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_dir.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/conf/files#11 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/conf/files.powerpc#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/conf/options#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/contrib/dev/run/rt2870.fw.uu#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ddb/db_output.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ddb/ddb.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ata/chipsets/ata-serverworks.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/bwn/if_bwn.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_em.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_igb.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/e1000/if_lem.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/esp/esp_sbus.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/fxp/if_fxp.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ipw/if_ipw.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/isp_freebsd.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/isp/ispvar.h#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ixgbe/ixgbe.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ofw/ofw_if.m#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ofw/ofw_standard.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ofw/openfirm.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/ofw/openfirm.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/pci/pci.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/sge/if_sge.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/sge/if_sgereg.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/ehci.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/controller/usb_controller.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/input/ums.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/net/uhso.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/quirk/usb_quirk.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/u3g.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/serial/uftdi.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_dev.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_device.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_device.h#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_generic.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_hid.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_hub.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usb_request.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbdevs#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/usbhid.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_run.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_runreg.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/dev/usb/wlan/if_runvar.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clsubs.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nfsclient/nfs_clvfsops.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/fs/nullfs/null_vnops.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/multipath/g_multipath.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/part/g_part_apm.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/vinum/geom_vinum.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/vinum/geom_vinum.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/vinum/geom_vinum_events.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/vinum/geom_vinum_var.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/geom/zero/g_zero.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/geode.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/i386/pmap.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/i386/xen/pmap.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/ia64/ia64/pmap.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/kern_mutex.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/sched_ule.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_pcpu.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_smp.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/subr_witness.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_default.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/vfs_subr.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/kern/vnode_if.src#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/adm5120/if_admsw.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/conf/XLR#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/include/hwfunc.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/include/locore.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/include/param.h#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/include/smp.h#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/cpu.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/elf_machdep.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/machdep.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/mp_machdep.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/mpboot.S#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/mips/pmap.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/dev/xlr/rge.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/files.xlr#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/interrupt.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/intr_machdep.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/iodi.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/mpwait.S#1 branch
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/on_chip.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/pic.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/xlr_machdep.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/xlr_pci.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/rmi/xlrconfig.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/mips/sibyte/sb_machdep.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/Makefile#14 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/cas/Makefile#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/mvs/Makefile#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/modules/zfs/Makefile#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/flowtable.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/flowtable.h#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/if_vlan.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/net/vnet.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netgraph/ng_base.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_bsd_addr.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_bsd_addr.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_constants.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_indata.c#9 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_input.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_lock_bsd.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_output.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_pcb.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_pcb.h#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_structs.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_timer.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctp_usrreq.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet/sctputil.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_input.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/netinet6/ip6_output.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/aim/mmu_oea.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/aim/mmu_oea64.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/aim/ofw_machdep.c#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/booke/pmap.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/cpufreq/pcr.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/include/intr_machdep.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/ofw/ofw_pcibus.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/ofw/ofw_real.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/ata_kauai.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/cpcht.c#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/cpchtvar.h#2 delete
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/smu.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/uninorth.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/uninorthpci.c#1 branch
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powermac/uninorthvar.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/powerpc/powerpc/openpic.c#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sparc64/pci/schizo.c#5 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sparc64/pci/schizoreg.h#2 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sparc64/pci/schizovar.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sparc64/sparc64/pmap.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sun4v/sun4v/pmap.c#6 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/eventhandler.h#3 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/lock.h#4 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/sys/vnode.h#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_object.c#7 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_page.c#8 integrate
.. //depot/projects/soc2009/anchie_send/src/sys/vm/vm_page.h#4 integrate

Differences ...

==== //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/apic_vector.S#3 (text+ko) ====

@@ -28,7 +28,7 @@
  * SUCH DAMAGE.
  *
  *	from: vector.s, 386BSD 0.1 unknown origin
- * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.113 2010/03/29 19:13:34 jhb Exp $
+ * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.115 2010/05/13 09:59:10 kib Exp $
  */
 
 /*
@@ -81,7 +81,7 @@
 
 	/* No EOI cycle used here */
 
-	iretq
+	jmp	doreti_iret
 
 	ISR_VEC(1, apic_isr1)
 	ISR_VEC(2, apic_isr2)
@@ -135,7 +135,7 @@
 	incl	smp_tlb_wait
 
 	popq	%rax
-	iretq
+	jmp	doreti_iret
 
 /*
  * Single page TLB shootdown
@@ -155,7 +155,7 @@
 	incl	smp_tlb_wait
 
 	popq	%rax
-	iretq
+	jmp	doreti_iret
 
 /*
  * Page range TLB shootdown.
@@ -181,7 +181,7 @@
 
 	popq	%rdx
 	popq	%rax
-	iretq
+	jmp	doreti_iret
 
 /*
  * Invalidate cache.
@@ -200,7 +200,7 @@
 	incl	smp_tlb_wait
 
 	popq	%rax
-	iretq
+	jmp	doreti_iret
 
 /*
  * Handler for IPIs sent via the per-cpu IPI bitmap.
@@ -247,7 +247,7 @@
 	call	cpususpend_handler
 
 	POP_FRAME
-	iretq
+	jmp	doreti_iret
 
 /*
  * Executed by a CPU when it receives a RENDEZVOUS IPI from another CPU.

==== //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/exception.S#6 (text+ko) ====

@@ -31,7 +31,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.145 2010/05/03 14:30:49 kib Exp $
+ * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.146 2010/05/12 10:29:35 kib Exp $
  */
 
 #include "opt_atpic.h"
@@ -553,7 +553,7 @@
 	movq	TF_R14(%rsp),%r14
 	movq	TF_R15(%rsp),%r15
 	addq	$TF_RIP,%rsp
-	iretq
+	jmp	doreti_iret
 
 ENTRY(fork_trampoline)
 	movq	%r12,%rdi		/* function */

==== //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/pmap.c#9 (text+ko) ====

@@ -77,7 +77,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.696 2010/05/08 20:34:01 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.697 2010/05/16 23:45:10 alc Exp $");
 
 /*
  *	Manages physical address maps.
@@ -3139,7 +3139,10 @@
 	va = trunc_page(va);
 	KASSERT(va <= VM_MAX_KERNEL_ADDRESS, ("pmap_enter: toobig"));
 	KASSERT(va < UPT_MIN_ADDRESS || va >= UPT_MAX_ADDRESS,
-	    ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)", va));
+	    ("pmap_enter: invalid to pmap_enter page table pages (va: 0x%lx)",
+	    va));
+	KASSERT((m->oflags & VPO_BUSY) != 0,
+	    ("pmap_enter: page %p is not busy", m));
 
 	mpte = NULL;
 
@@ -4240,7 +4243,16 @@
 	pt_entry_t oldpte, *pte;
 	vm_offset_t va;
 
-	if ((m->flags & PG_FICTITIOUS) != 0 ||
+	KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0,
+	    ("pmap_remove_write: page %p is not managed", m));
+
+	/*
+	 * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by
+	 * another thread while the object is locked.  Thus, if PG_WRITEABLE
+	 * is clear, no page table entries need updating.
+	 */
+	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	if ((m->oflags & VPO_BUSY) == 0 &&
 	    (m->flags & PG_WRITEABLE) == 0)
 		return;
 	vm_page_lock_queues();

==== //depot/projects/soc2009/anchie_send/src/sys/amd64/amd64/trap.c#6 (text+ko) ====

@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.342 2010/05/01 13:15:35 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.343 2010/05/12 10:29:06 kib Exp $");
 
 /*
  * AMD64 Trap and System call handling
@@ -488,22 +488,18 @@
 			}
 			if (frame->tf_rip == (long)ld_ds) {
 				frame->tf_rip = (long)ds_load_fault;
-				frame->tf_ds = _udatasel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_es) {
 				frame->tf_rip = (long)es_load_fault;
-				frame->tf_es = _udatasel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_fs) {
 				frame->tf_rip = (long)fs_load_fault;
-				frame->tf_fs = _ufssel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_gs) {
 				frame->tf_rip = (long)gs_load_fault;
-				frame->tf_gs = _ugssel;
 				goto out;
 			}
 			if (frame->tf_rip == (long)ld_gsbase) {

==== //depot/projects/soc2009/anchie_send/src/sys/arm/arm/identcpu.c#5 (text+ko) ====

@@ -42,7 +42,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/identcpu.c,v 1.19 2010/05/04 10:14:05 kevlo Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/identcpu.c,v 1.20 2010/05/12 05:50:56 kevlo Exp $");
 #include <sys/systm.h>
 #include <sys/param.h>
 #include <sys/malloc.h>
@@ -220,7 +220,7 @@
 	  generic_steppings },
 	{ CPU_ID_ARM966ESR1,	CPU_CLASS_ARM9ES,	"ARM966E-S",
 	  generic_steppings },
-	{ CPU_ID_FA526,		CPU_CLASS_ARM9,		"FA526",
+	{ CPU_ID_FA526,		CPU_CLASS_ARM9TDMI,	"FA526",
 	  generic_steppings },
 	{ CPU_ID_FA626TE,	CPU_CLASS_ARM9ES,	"FA626TE",
 	  generic_steppings },
@@ -322,7 +322,6 @@
 	{ "ARM7",	"CPU_ARM7" },		/* CPU_CLASS_ARM7 */
 	{ "ARM7TDMI",	"CPU_ARM7TDMI" },	/* CPU_CLASS_ARM7TDMI */
 	{ "ARM8",	"CPU_ARM8" },		/* CPU_CLASS_ARM8 */
-	{ "ARM9",	"CPU_ARM9" },		/* CPU_CLASS_ARM9 */
 	{ "ARM9TDMI",	"CPU_ARM9TDMI" },	/* CPU_CLASS_ARM9TDMI */
 	{ "ARM9E-S",	"CPU_ARM9E" },		/* CPU_CLASS_ARM9ES */
 	{ "ARM9EJ-S",	"CPU_ARM9E" },		/* CPU_CLASS_ARM9EJS */

==== //depot/projects/soc2009/anchie_send/src/sys/arm/arm/pmap.c#10 (text+ko) ====

@@ -140,7 +140,7 @@
 #include "opt_vm.h"
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.122 2010/05/08 20:34:01 alc Exp $");
+__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.123 2010/05/16 23:45:10 alc Exp $");
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -3318,6 +3318,8 @@
 	u_int oflags;
 	vm_paddr_t pa;
 
+	KASSERT((m->oflags & VPO_BUSY) != 0 || (flags & M_NOWAIT) != 0,
+	    ("pmap_enter_locked: page %p is not busy", m));
 	PMAP_ASSERT_LOCKED(pmap);
 	mtx_assert(&vm_page_queue_mtx, MA_OWNED);
 	if (va == vector_page) {
@@ -4527,7 +4529,17 @@
 pmap_remove_write(vm_page_t m)
 {
 
-	if (m->flags & PG_WRITEABLE) {
+	KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0,
+	    ("pmap_remove_write: page %p is not managed", m));
+
+	/*
+	 * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be set by
+	 * another thread while the object is locked.  Thus, if PG_WRITEABLE
+	 * is clear, no page table entries need updating.
+	 */
+	VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED);
+	if ((m->oflags & VPO_BUSY) != 0 ||
+	    (m->flags & PG_WRITEABLE) != 0) {
 		vm_page_lock_queues();
 		pmap_clearbit(m, PVF_WRITE);
 		vm_page_unlock_queues();

==== //depot/projects/soc2009/anchie_send/src/sys/arm/include/disassem.h#2 (text+ko) ====

@@ -35,7 +35,7 @@
  *
  * Define the interface structure required by the disassembler.
  *
- * $FreeBSD: src/sys/arm/include/disassem.h,v 1.2 2005/01/05 21:58:48 imp Exp $
+ * $FreeBSD: src/sys/arm/include/disassem.h,v 1.3 2010/05/14 00:00:19 cognet Exp $
  */
 
 #ifndef _MACHINE_DISASSEM_H_
@@ -43,7 +43,7 @@
 typedef struct {
 	u_int	(*di_readword)(u_int);
 	void	(*di_printaddr)(u_int);	
-	void	(*di_printf)(const char *, ...) __printflike(1, 2);
+	int	(*di_printf)(const char *, ...) __printflike(1, 2);
 } disasm_interface_t;
 
 /* Prototypes for callable functions */

==== //depot/projects/soc2009/anchie_send/src/sys/arm/include/md_var.h#4 (text+ko) ====

@@ -27,7 +27,7 @@
  * SUCH DAMAGE.
  *
  *	from: FreeBSD: src/sys/i386/include/md_var.h,v 1.40 2001/07/12
- * $FreeBSD: src/sys/arm/include/md_var.h,v 1.7 2010/02/20 14:54:11 kevlo Exp $
+ * $FreeBSD: src/sys/arm/include/md_var.h,v 1.8 2010/05/12 05:50:56 kevlo Exp $
  */
 
 #ifndef	_MACHINE_MD_VAR_H_
@@ -57,7 +57,6 @@
 	CPU_CLASS_ARM7,
 	CPU_CLASS_ARM7TDMI,
 	CPU_CLASS_ARM8,
-	CPU_CLASS_ARM9,
 	CPU_CLASS_ARM9TDMI,
 	CPU_CLASS_ARM9ES,
 	CPU_CLASS_ARM9EJS,

==== //depot/projects/soc2009/anchie_send/src/sys/boot/common/module.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/boot/common/module.c,v 1.29 2009/12/31 12:17:38 nyan Exp $");
+__FBSDID("$FreeBSD: src/sys/boot/common/module.c,v 1.30 2010/05/10 18:23:00 imp Exp $");
 
 /*
  * file/module function dispatcher, support, etc.
@@ -295,7 +295,8 @@
 }
 
 static int
-file_load_dependencies(struct preloaded_file *base_file) {
+file_load_dependencies(struct preloaded_file *base_file)
+{
     struct file_metadata *md;
     struct preloaded_file *fp;
     struct mod_depend *verinfo;

==== //depot/projects/soc2009/anchie_send/src/sys/boot/forth/loader.conf.5#3 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.29 2009/11/27 03:55:42 sobomax Exp $
+.\" $FreeBSD: src/sys/boot/forth/loader.conf.5,v 1.30 2010/05/13 12:07:55 uqs Exp $
 .Dd January 16, 2008
 .Dt LOADER.CONF 5
 .Os
@@ -243,6 +243,14 @@
 .Xr boot 8 ,
 .Xr loader 8 ,
 .Xr loader.4th 8
+.Sh HISTORY
+The file
+.Nm
+first appeared in
+.Fx 3.2 .
+.Sh AUTHORS
+This manual page was written by
+.An Daniel C. Sobral Aq dcs@FreeBSD.org .
 .Sh BUGS
 The
 .Xr loader 8
@@ -253,11 +261,3 @@
 .Dq Va hw.ata.ata_dma Ns "=0" )
 should precede any experimental additions to
 .Nm .
-.Sh HISTORY
-The file
-.Nm
-first appeared in
-.Fx 3.2 .
-.Sh AUTHORS
-This manual page was written by
-.An Daniel C. Sobral Aq dcs@FreeBSD.org .

==== //depot/projects/soc2009/anchie_send/src/sys/cam/scsi/scsi_sg.c#5 (text+ko) ====

@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sg.c,v 1.17 2010/03/17 18:53:58 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_sg.c,v 1.19 2010/05/11 22:51:13 mjacob Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -303,7 +303,14 @@
 	softc->dev = make_dev(&sg_cdevsw, periph->unit_number,
 			      UID_ROOT, GID_OPERATOR, 0600, "%s%d",
 			      periph->periph_name, periph->unit_number);
-	(void)make_dev_alias(softc->dev, "sg%c", 'a' + periph->unit_number);
+	if (periph->unit_number < 26) {
+		(void)make_dev_alias(softc->dev, "sg%c",
+		    periph->unit_number + 'a');
+	} else {
+		(void)make_dev_alias(softc->dev, "sg%c%c",
+		    ((periph->unit_number / 26) - 1) + 'a',
+		    (periph->unit_number % 26) + 'a');
+	}
 	cam_periph_lock(periph);
 	softc->dev->si_drv1 = periph;
 

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/boot/zfs/zfsimpl.h#3 (text+ko) ====

@@ -66,7 +66,7 @@
 #define	P2ROUNDUP(x, align)		(-(-(x) & -(align)))
 #define	P2END(x, align)			(-(~(x) & -(align)))
 #define	P2PHASEUP(x, align, phase)	((phase) - (((phase) - (x)) & -(align)))
-#define	P2CROSS(x, y, align)		(((x) ^ (y)) > (align) - 1)
+#define	P2BOUNDARY(off, len, align)	(((off) ^ ((off) + (len) - 1)) > (align) - 1)
 
 /*
  * General-purpose 32-bit and 64-bit bitfield encodings.

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c#3 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c,v 1.2 2010/04/19 09:03:36 delphij Exp $");
+__FBSDID("$FreeBSD: src/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c,v 1.3 2010/05/16 15:12:34 pjd Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -40,12 +40,6 @@
 
 static uma_zone_t taskq_zone;
 
-struct ostask {
-	struct task	ost_task;
-	task_func_t	*ost_func;
-	void		*ost_arg;
-};
-
 taskq_t *system_taskq = NULL;
 
 static void
@@ -140,3 +134,32 @@
 
 	return ((taskqid_t)(void *)task);
 }
+
+#define	TASKQ_MAGIC	0x74541c
+
+static void
+taskq_run_safe(void *arg, int pending __unused)
+{
+	struct ostask *task = arg;
+
+	ASSERT(task->ost_magic == TASKQ_MAGIC);
+	task->ost_func(task->ost_arg);
+	task->ost_magic = 0;
+}
+
+taskqid_t
+taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg,
+    struct ostask *task)
+{
+
+	ASSERT(task->ost_magic != TASKQ_MAGIC);
+
+	task->ost_magic = TASKQ_MAGIC;
+	task->ost_func = func;
+	task->ost_arg = arg;
+
+	TASK_INIT(&task->ost_task, 0, taskq_run_safe, task);
+	taskqueue_enqueue(tq->tq_queue, &task->ost_task);
+
+	return ((taskqid_t)(void *)task);
+}

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/dnlc.h#2 (text+ko) ====

@@ -23,7 +23,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/dnlc.h,v 1.4 2008/11/17 20:49:29 pjd Exp $
+ * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/dnlc.h,v 1.5 2010/05/11 22:46:36 pjd Exp $
  */
 
 #ifndef _OPENSOLARIS_SYS_DNLC_H_
@@ -35,6 +35,6 @@
 #define	dnlc_update(dvp, name, vp)	do { } while (0)
 #define	dnlc_remove(dvp, name)		do { } while (0)
 #define	dnlc_purge_vfsp(vfsp, count)	(0)
-#define	dnlc_reduce_cache(percent)	EVENTHANDLER_INVOKE(vfs_lowvnodes, (int)(intptr_t)(percent))
+#define	dnlc_reduce_cache(percent)	do { } while (0)
 
 #endif	/* !_OPENSOLARIS_SYS_DNLC_H_ */

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/compat/opensolaris/sys/sysmacros.h#2 (text+ko) ====

@@ -19,7 +19,7 @@
  *
  * CDDL HEADER END
  *
- * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/sysmacros.h,v 1.5 2009/02/28 16:21:25 ed Exp $
+ * $FreeBSD: src/sys/cddl/compat/opensolaris/sys/sysmacros.h,v 1.6 2010/05/13 20:32:56 mm Exp $
  */
 /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
 /*	  All Rights Reserved  	*/
@@ -43,6 +43,10 @@
 #define	ABS(a)	((a) < 0 ? -(a) : (a))
 #endif
 
+#ifndef	SIGNOF
+#define	SIGNOF(a)	((a) < 0 ? -1 : (a) > 0)
+#endif
+
 /*
  * Macro for checking power of 2 address alignment.
  */
@@ -63,7 +67,7 @@
 #define	P2ROUNDUP(x, align)		(-(-(x) & -(align)))
 #define	P2END(x, align)			(-(~(x) & -(align)))
 #define	P2PHASEUP(x, align, phase)	((phase) - (((phase) - (x)) & -(align)))
-#define	P2CROSS(x, y, align)		(((x) ^ (y)) > (align) - 1)
+#define	P2BOUNDARY(off, len, align)	(((off) ^ ((off) + (len) - 1)) > (align) - 1)
 /*
  * Determine whether two numbers have the same high-order bit.
  */

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c#4 (text+ko) ====

@@ -308,20 +308,18 @@
 		ASSERT3U(db->db.db_offset, ==, db->db_blkid * db->db.db_size);
 	}
 
-	if (db->db_level == 0) {
-		/* we can be momentarily larger in dnode_set_blksz() */
-		if (db->db_blkid != DB_BONUS_BLKID && dn) {
-			ASSERT3U(db->db.db_size, >=, dn->dn_datablksz);
-		}
-		if (db->db.db_object == DMU_META_DNODE_OBJECT) {
-			dbuf_dirty_record_t *dr = db->db_data_pending;
-			/*
-			 * it should only be modified in syncing
-			 * context, so make sure we only have
-			 * one copy of the data.
-			 */
-			ASSERT(dr == NULL || dr->dt.dl.dr_data == db->db_buf);
-		}
+	/*
+	 * We can't assert that db_size matches dn_datablksz because it
+	 * can be momentarily different when another thread is doing
+	 * dnode_set_blksz().
+	 */
+	if (db->db_level == 0 && db->db.db_object == DMU_META_DNODE_OBJECT) {
+		dbuf_dirty_record_t *dr = db->db_data_pending;
+		/*
+		 * It should only be modified in syncing context, so
+		 * make sure we only have one copy of the data.
+		 */
+		ASSERT(dr == NULL || dr->dt.dl.dr_data == db->db_buf);
 	}
 
 	/* verify db->db_blkptr */
@@ -1917,7 +1915,6 @@
 	dnode_t *dn = db->db_dnode;
 	objset_impl_t *os = dn->dn_objset;
 	uint64_t txg = tx->tx_txg;
-	int blksz;
 
 	ASSERT(dmu_tx_is_syncing(tx));
 
@@ -2027,23 +2024,24 @@
 		return;
 	}
 
-	blksz = arc_buf_size(*datap);
-
-	if (dn->dn_object != DMU_META_DNODE_OBJECT) {
+	if (dn->dn_object != DMU_META_DNODE_OBJECT &&
+	    refcount_count(&db->db_holds) > 1 &&
+	    *datap == db->db_buf) {
 		/*
-		 * If this buffer is currently "in use" (i.e., there are
-		 * active holds and db_data still references it), then make
-		 * a copy before we start the write so that any modifications
-		 * from the open txg will not leak into this write.
+		 * If this buffer is currently "in use" (i.e., there
+		 * are active holds and db_data still references it),
+		 * then make a copy before we start the write so that
+		 * any modifications from the open txg will not leak
+		 * into this write.
 		 *
-		 * NOTE: this copy does not need to be made for objects only
-		 * modified in the syncing context (e.g. DNONE_DNODE blocks).
+		 * NOTE: this copy does not need to be made for
+		 * objects only modified in the syncing context (e.g.
+		 * DNONE_DNODE blocks).
 		 */
-		if (refcount_count(&db->db_holds) > 1 && *datap == db->db_buf) {
-			arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db);
-			*datap = arc_buf_alloc(os->os_spa, blksz, db, type);
-			bcopy(db->db.db_data, (*datap)->b_data, blksz);
-		}
+		int blksz = arc_buf_size(*datap);
+		arc_buf_contents_t type = DBUF_GET_BUFC_TYPE(db);
+		*datap = arc_buf_alloc(os->os_spa, blksz, db, type);
+		bcopy(db->db.db_data, (*datap)->b_data, blksz);
 	}
 
 	ASSERT(*datap != NULL);

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c#5 (text+ko) ====

@@ -1192,6 +1192,7 @@
 {
 	dbuf_init();
 	dnode_init();
+	zfetch_init();
 	arc_init();
 	l2arc_init();
 }
@@ -1200,6 +1201,7 @@
 dmu_fini(void)
 {
 	arc_fini();
+	zfetch_fini();
 	dnode_fini();
 	dbuf_fini();
 	l2arc_fini();

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c#4 (text+ko) ====

@@ -23,8 +23,6 @@
  * Use is subject to license terms.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #include <sys/dmu.h>
 #include <sys/dmu_impl.h>
 #include <sys/dmu_tx.h>
@@ -172,66 +170,59 @@
 	(level) * (dnp->dn_indblkshift - SPA_BLKPTRSHIFT)))
 
 static int
-backup_cb(traverse_blk_cache_t *bc, spa_t *spa, void *arg)
+backup_cb(spa_t *spa, blkptr_t *bp, const zbookmark_t *zb,
+    const dnode_phys_t *dnp, void *arg)
 {
 	struct backuparg *ba = arg;
-	uint64_t object = bc->bc_bookmark.zb_object;
-	int level = bc->bc_bookmark.zb_level;
-	uint64_t blkid = bc->bc_bookmark.zb_blkid;
-	blkptr_t *bp = bc->bc_blkptr.blk_birth ? &bc->bc_blkptr : NULL;
 	dmu_object_type_t type = bp ? BP_GET_TYPE(bp) : DMU_OT_NONE;
-	void *data = bc->bc_data;
 	int err = 0;
 
 	if (issig(JUSTLOOKING) && issig(FORREAL))
 		return (EINTR);
 
-	ASSERT(data || bp == NULL);
-
-	if (bp == NULL && object == 0) {
-		uint64_t span = BP_SPAN(bc->bc_dnode, level);
-		uint64_t dnobj = (blkid * span) >> DNODE_SHIFT;
+	if (bp == NULL && zb->zb_object == 0) {
+		uint64_t span = BP_SPAN(dnp, zb->zb_level);
+		uint64_t dnobj = (zb->zb_blkid * span) >> DNODE_SHIFT;
 		err = dump_freeobjects(ba, dnobj, span >> DNODE_SHIFT);
 	} else if (bp == NULL) {
-		uint64_t span = BP_SPAN(bc->bc_dnode, level);
-		err = dump_free(ba, object, blkid * span, span);
-	} else if (data && level == 0 && type == DMU_OT_DNODE) {
-		dnode_phys_t *blk = data;
+		uint64_t span = BP_SPAN(dnp, zb->zb_level);
+		err = dump_free(ba, zb->zb_object, zb->zb_blkid * span, span);
+	} else if (zb->zb_level > 0 || type == DMU_OT_OBJSET) {
+		return (0);
+	} else if (type == DMU_OT_DNODE) {
+		dnode_phys_t *blk;
 		int i;
 		int blksz = BP_GET_LSIZE(bp);
+		uint32_t aflags = ARC_WAIT;
+		arc_buf_t *abuf;
 
+		if (arc_read_nolock(NULL, spa, bp,
+		    arc_getbuf_func, &abuf, ZIO_PRIORITY_ASYNC_READ,
+		    ZIO_FLAG_CANFAIL, &aflags, zb) != 0)
+			return (EIO);
+
+		blk = abuf->b_data;
 		for (i = 0; i < blksz >> DNODE_SHIFT; i++) {
-			uint64_t dnobj =
-			    (blkid << (DNODE_BLOCK_SHIFT - DNODE_SHIFT)) + i;
+			uint64_t dnobj = (zb->zb_blkid <<
+			    (DNODE_BLOCK_SHIFT - DNODE_SHIFT)) + i;
 			err = dump_dnode(ba, dnobj, blk+i);
 			if (err)
 				break;
 		}
-	} else if (level == 0 &&
-	    type != DMU_OT_DNODE && type != DMU_OT_OBJSET) {
+		(void) arc_buf_remove_ref(abuf, &abuf);
+	} else { /* it's a level-0 block of a regular object */
+		uint32_t aflags = ARC_WAIT;
+		arc_buf_t *abuf;
 		int blksz = BP_GET_LSIZE(bp);
-		if (data == NULL) {
-			uint32_t aflags = ARC_WAIT;
-			arc_buf_t *abuf;
-			zbookmark_t zb;
 
-			zb.zb_objset = ba->os->os->os_dsl_dataset->ds_object;
-			zb.zb_object = object;
-			zb.zb_level = level;
-			zb.zb_blkid = blkid;
-			(void) arc_read_nolock(NULL, spa, bp,
-			    arc_getbuf_func, &abuf, ZIO_PRIORITY_ASYNC_READ,
-			    ZIO_FLAG_MUSTSUCCEED, &aflags, &zb);
+		if (arc_read_nolock(NULL, spa, bp,
+		    arc_getbuf_func, &abuf, ZIO_PRIORITY_ASYNC_READ,
+		    ZIO_FLAG_CANFAIL, &aflags, zb) != 0)
+			return (EIO);
 
-			if (abuf) {
-				err = dump_data(ba, type, object, blkid * blksz,
-				    blksz, abuf->b_data);
-				(void) arc_buf_remove_ref(abuf, &abuf);
-			}
-		} else {
-			err = dump_data(ba, type, object, blkid * blksz,
-			    blksz, data);
-		}
+		err = dump_data(ba, type, zb->zb_object, zb->zb_blkid * blksz,
+		    blksz, abuf->b_data);
+		(void) arc_buf_remove_ref(abuf, &abuf);
 	}
 
 	ASSERT(err == 0 || err == EINTR);
@@ -311,8 +302,7 @@
 		return (ba.err);
 	}
 
-	err = traverse_dsl_dataset(ds, fromtxg,
-	    ADVANCE_PRE | ADVANCE_HOLES | ADVANCE_DATA | ADVANCE_NOLOCK,
+	err = traverse_dataset(ds, fromtxg, TRAVERSE_PRE | TRAVERSE_PREFETCH,
 	    backup_cb, &ba);
 
 	if (err) {

==== //depot/projects/soc2009/anchie_send/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c#2 (text+ko) ====

@@ -19,12 +19,10 @@
  * CDDL HEADER END
  */
 /*
- * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
+ * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
-#pragma ident	"%Z%%M%	%I%	%E% SMI"
-
 #include <sys/zfs_context.h>
 #include <sys/dmu_objset.h>
 #include <sys/dmu_traverse.h>
@@ -35,510 +33,88 @@
 #include <sys/spa.h>
 #include <sys/zio.h>
 #include <sys/dmu_impl.h>
-#include <sys/zvol.h>
+#include <sys/callb.h>
 
-#define	BP_SPAN_SHIFT(level, width)	((level) * (width))
-
-#define	BP_EQUAL(b1, b2)				\
-	(DVA_EQUAL(BP_IDENTITY(b1), BP_IDENTITY(b2)) &&	\
-	(b1)->blk_birth == (b2)->blk_birth)
-
-/*
- * Compare two bookmarks.
- *
- * For ADVANCE_PRE, the visitation order is:
- *
- *	objset 0, 1, 2, ..., ZB_MAXOBJSET.
- *	object 0, 1, 2, ..., ZB_MAXOBJECT.
- *	blkoff 0, 1, 2, ...
- *	level ZB_MAXLEVEL, ..., 2, 1, 0.
- *
- * where blkoff = blkid << BP_SPAN_SHIFT(level, width), and thus a valid
- * ordering vector is:
- *
- *	< objset, object, blkoff, -level >
- *
- * For ADVANCE_POST, the starting offsets aren't sequential but ending
- * offsets [blkoff = (blkid + 1) << BP_SPAN_SHIFT(level, width)] are.
- * The visitation order is:
- *
- *	objset 1, 2, ..., ZB_MAXOBJSET, 0.
- *	object 1, 2, ..., ZB_MAXOBJECT, 0.
- *	blkoff 1, 2, ...
- *	level 0, 1, 2, ..., ZB_MAXLEVEL.
- *
- * and thus a valid ordering vector is:
- *
- *	< objset - 1, object - 1, blkoff, level >
- *
- * Both orderings can be expressed as:
- *
- *	< objset + bias, object + bias, blkoff, level ^ bias >
- *
- * where 'bias' is either 0 or -1 (for ADVANCE_PRE or ADVANCE_POST)
- * and 'blkoff' is (blkid - bias) << BP_SPAN_SHIFT(level, wshift).
- *
- * Special case: an objset's osphys is represented as level -1 of object 0.
- * It is always either the very first or very last block we visit in an objset.
- * Therefore, if either bookmark's level is -1, level alone determines order.
- */
-static int
-compare_bookmark(zbookmark_t *szb, zbookmark_t *ezb, dnode_phys_t *dnp,
-    int advance)
-{
-	int bias = (advance & ADVANCE_PRE) ? 0 : -1;
-	uint64_t sblkoff, eblkoff;
-	int slevel, elevel, wshift;
-
-	if (szb->zb_objset + bias < ezb->zb_objset + bias)
-		return (-1);
-
-	if (szb->zb_objset + bias > ezb->zb_objset + bias)
-		return (1);
-
-	slevel = szb->zb_level;
-	elevel = ezb->zb_level;
-
-	if ((slevel | elevel) < 0)
-		return ((slevel ^ bias) - (elevel ^ bias));
-
-	if (szb->zb_object + bias < ezb->zb_object + bias)
-		return (-1);
-
-	if (szb->zb_object + bias > ezb->zb_object + bias)
-		return (1);
-
-	if (dnp == NULL)
-		return (0);
-
-	wshift = dnp->dn_indblkshift - SPA_BLKPTRSHIFT;
-
-	sblkoff = (szb->zb_blkid - bias) << BP_SPAN_SHIFT(slevel, wshift);
-	eblkoff = (ezb->zb_blkid - bias) << BP_SPAN_SHIFT(elevel, wshift);

>>> TRUNCATED FOR MAIL (1000 lines) <<<



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