Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 Jan 2010 09:15:26 GMT
From:      Alexander Motin <mav@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 173891 for review
Message-ID:  <201001290915.o0T9FQXR015641@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/chv.cgi?CH=173891

Change 173891 by mav@mav_mavbook on 2010/01/29 09:14:27

	IFC

Affected files ...

.. //depot/projects/scottl-camlock/src/lib/libusb/libusb20.3#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libusb/libusb20.c#6 integrate
.. //depot/projects/scottl-camlock/src/lib/libusb/libusb20.h#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libusb/libusb20_int.h#4 integrate
.. //depot/projects/scottl-camlock/src/lib/libusb/libusb20_ugen20.c#6 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/Makefile#21 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/ahci.4#8 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/gpib.4#2 integrate
.. //depot/projects/scottl-camlock/src/share/man/man4/run.4#1 branch
.. //depot/projects/scottl-camlock/src/share/man/man9/locking.9#3 integrate
.. //depot/projects/scottl-camlock/src/share/misc/committers-src.dot#9 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#36 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#48 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#31 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#74 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam.h#13 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#38 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#52 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_periph.h#27 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_queue.h#9 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#14 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#146 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.h#23 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#17 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_periph.h#14 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_sim.h#7 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.c#15 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#38 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#22 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_da.c#53 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_low.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_pass.c#31 integrate
.. //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_xpt.c#29 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/NOTES#49 integrate
.. //depot/projects/scottl-camlock/src/sys/conf/files#63 integrate
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/run/LICENSE#1 branch
.. //depot/projects/scottl-camlock/src/sys/contrib/dev/run/rt2870.fw.uu#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#99 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.h#34 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/asr/asr.c#17 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/ata-all.c#49 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ata/atapi-cam.c#23 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ciss/ciss.c#26 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hptiop/hptiop.c#7 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hptrr/hptrr_osm_bsd.c#5 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/hptrr/os_bsd.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mly/mly.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_cam.h#8 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/mpt/mpt_raid.c#20 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/ppbus/vpo.c#13 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/siis/siis.c#37 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/trm/trm.c#16 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/twa/tw_osl_cam.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/controller/ehci.c#12 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/quirk/usb_quirk.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/storage/umass.c#18 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/usbdevs#42 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_rum.c#10 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_run.c#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_runreg.h#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_runvar.h#1 branch
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_uath.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/dev/usb/wlan/if_zyd.c#11 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clbio.c#6 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clnfsiod.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfs_clsubs.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/fs/nfsclient/nfsmount.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/atheros/ar71xx_pci.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/asm_octeon.S#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_fau.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_fau.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_fpa.c#3 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_fpa.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_ipd.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_ipd.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_pip.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_pko.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_pko.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_rgmx.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/dev/rgmii/octeon_rgmx.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/driveid.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/obiovar.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/octeon_ebt3000_cf.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/octeon_ebt3000_cf.h#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/octeon_machdep.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/cavium/octeon_pcmap_regs.h#4 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/conf/ALCHEMY#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/mips/locore.S#4 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/mips/pmap.c#9 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/rmi/on_chip.c#2 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/rmi/pic.h#3 integrate
.. //depot/projects/scottl-camlock/src/sys/mips/rmi/xlr_machdep.c#4 integrate
.. //depot/projects/scottl-camlock/src/sys/modules/Makefile#43 integrate
.. //depot/projects/scottl-camlock/src/sys/modules/runfw/Makefile#1 branch
.. //depot/projects/scottl-camlock/src/sys/modules/usb/Makefile#14 integrate
.. //depot/projects/scottl-camlock/src/sys/modules/usb/run/Makefile#1 branch

Differences ...

==== //depot/projects/scottl-camlock/src/lib/libusb/libusb20.3#4 (text+ko) ====

@@ -24,7 +24,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/lib/libusb/libusb20.3,v 1.5 2009/11/20 08:57:25 thompsa Exp $
+.\" $FreeBSD: src/lib/libusb/libusb20.3,v 1.6 2010/01/29 02:44:06 thompsa Exp $
 .\"
 .Dd November 18, 2009
 .Dt LIBUSB20 3
@@ -143,6 +143,8 @@
 .Ft int
 .Fn libusb20_dev_reset "struct libusb20_device *pdev"
 .Ft int
+.Fn libusb20_dev_check_connected "struct libusb20_device *pdev"
+.Ft int
 .Fn libusb20_dev_set_power_mode "struct libusb20_device *pdev" "uint8_t power_mode"
 .Ft uint8_t
 .Fn libusb20_dev_get_power_mode "struct libusb20_device *pdev"
@@ -677,6 +679,15 @@
 This function returns zero on success else a LIBUSB20_ERROR value is
 returned.
 .
+.
+.Pp
+.
+.Fn libusb20_dev_check_connected
+will check if an opened USB device is still connected.
+.
+This function returns zero if the device is still connected else a LIBUSB20_ERROR value is returned.
+.
+.
 .Pp
 .
 .Fn libusb20_dev_set_power_mode

==== //depot/projects/scottl-camlock/src/lib/libusb/libusb20.c#6 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20.c,v 1.7 2010/01/10 19:18:49 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20.c,v 1.8 2010/01/29 02:44:06 thompsa Exp $ */
 /*-
  * Copyright (c) 2008-2009 Hans Petter Selasky. All rights reserved.
  *
@@ -67,6 +67,7 @@
 #define	dummy_set_config_index (void *)dummy_int
 #define	dummy_set_alt_index (void *)dummy_int
 #define	dummy_reset_device (void *)dummy_int
+#define	dummy_check_connected (void *)dummy_int
 #define	dummy_set_power_mode (void *)dummy_int
 #define	dummy_get_power_mode (void *)dummy_int
 #define	dummy_kernel_driver_active (void *)dummy_int
@@ -673,6 +674,15 @@
 }
 
 int
+libusb20_dev_check_connected(struct libusb20_device *pdev)
+{
+	int error;
+
+	error = pdev->methods->check_connected(pdev);
+	return (error);
+}
+
+int
 libusb20_dev_set_power_mode(struct libusb20_device *pdev, uint8_t power_mode)
 {
 	int error;

==== //depot/projects/scottl-camlock/src/lib/libusb/libusb20.h#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20.h,v 1.6 2009/11/20 08:57:25 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20.h,v 1.7 2010/01/29 02:44:06 thompsa Exp $ */
 /*-
  * Copyright (c) 2008-2009 Hans Petter Selasky. All rights reserved.
  * Copyright (c) 2007-2008 Daniel Drake.  All rights reserved.
@@ -250,6 +250,7 @@
 int	libusb20_dev_req_string_sync(struct libusb20_device *pdev, uint8_t index, uint16_t langid, void *ptr, uint16_t len);
 int	libusb20_dev_req_string_simple_sync(struct libusb20_device *pdev, uint8_t index, void *ptr, uint16_t len);
 int	libusb20_dev_reset(struct libusb20_device *pdev);
+int	libusb20_dev_check_connected(struct libusb20_device *pdev);
 int	libusb20_dev_set_power_mode(struct libusb20_device *pdev, uint8_t power_mode);
 uint8_t	libusb20_dev_get_power_mode(struct libusb20_device *pdev);
 int	libusb20_dev_set_alt_index(struct libusb20_device *pdev, uint8_t iface_index, uint8_t alt_index);

==== //depot/projects/scottl-camlock/src/lib/libusb/libusb20_int.h#4 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20_int.h,v 1.4 2009/07/30 00:11:41 alfred Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20_int.h,v 1.5 2010/01/29 02:44:06 thompsa Exp $ */
 /*-
  * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
  *
@@ -101,6 +101,7 @@
 typedef int (libusb20_get_power_mode_t)(struct libusb20_device *pdev, uint8_t *power_mode);
 typedef int (libusb20_set_alt_index_t)(struct libusb20_device *pdev, uint8_t iface_index, uint8_t alt_index);
 typedef int (libusb20_set_config_index_t)(struct libusb20_device *pdev, uint8_t index);
+typedef int (libusb20_check_connected_t)(struct libusb20_device *pdev);
 
 /* USB transfer specific */
 typedef int (libusb20_tr_open_t)(struct libusb20_transfer *xfer, uint32_t MaxBufSize, uint32_t MaxFrameCount, uint8_t ep_no);
@@ -117,6 +118,7 @@
   m(n, kernel_driver_active) \
   m(n, process) \
   m(n, reset_device) \
+  m(n, check_connected) \
   m(n, set_power_mode) \
   m(n, get_power_mode) \
   m(n, set_alt_index) \

==== //depot/projects/scottl-camlock/src/lib/libusb/libusb20_ugen20.c#6 (text+ko) ====

@@ -1,4 +1,4 @@
-/* $FreeBSD: src/lib/libusb/libusb20_ugen20.c,v 1.6 2009/11/08 20:03:52 thompsa Exp $ */
+/* $FreeBSD: src/lib/libusb/libusb20_ugen20.c,v 1.7 2010/01/29 02:44:06 thompsa Exp $ */
 /*-
  * Copyright (c) 2008 Hans Petter Selasky. All rights reserved.
  *
@@ -67,6 +67,7 @@
 static libusb20_set_config_index_t ugen20_set_config_index;
 static libusb20_set_alt_index_t ugen20_set_alt_index;
 static libusb20_reset_device_t ugen20_reset_device;
+static libusb20_check_connected_t ugen20_check_connected;
 static libusb20_set_power_mode_t ugen20_set_power_mode;
 static libusb20_get_power_mode_t ugen20_get_power_mode;
 static libusb20_kernel_driver_active_t ugen20_kernel_driver_active;
@@ -553,6 +554,25 @@
 }
 
 static int
+ugen20_check_connected(struct libusb20_device *pdev)
+{
+	uint32_t plugtime;
+	int error = 0;
+
+	if (ioctl(pdev->file_ctrl, USB_GET_PLUGTIME, &plugtime)) {
+		error = LIBUSB20_ERROR_NO_DEVICE;
+		goto done;
+	}
+
+	if (pdev->session_data.plugtime != plugtime) {
+		error = LIBUSB20_ERROR_NO_DEVICE;
+		goto done;
+	}
+done:
+	return (error);
+}
+
+static int
 ugen20_set_power_mode(struct libusb20_device *pdev, uint8_t power_mode)
 {
 	int temp;

==== //depot/projects/scottl-camlock/src/share/man/man4/Makefile#21 (text+ko) ====

@@ -1,5 +1,5 @@
 #	@(#)Makefile	8.1 (Berkeley) 6/18/93
-# $FreeBSD: src/share/man/man4/Makefile,v 1.472 2010/01/27 00:34:52 delphij Exp $
+# $FreeBSD: src/share/man/man4/Makefile,v 1.473 2010/01/28 22:28:01 thompsa Exp $
 
 MAN=	aac.4 \
 	acpi.4 \
@@ -328,6 +328,7 @@
 	rp.4 \
 	rue.4 \
 	rum.4 \
+	run.4 \
 	sa.4 \
 	safe.4 \
 	sbp.4 \

==== //depot/projects/scottl-camlock/src/share/man/man4/ahci.4#8 (text+ko) ====

@@ -23,9 +23,9 @@
 .\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 .\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man4/ahci.4,v 1.3 2009/08/30 15:20:13 mav Exp $
+.\" $FreeBSD: src/share/man/man4/ahci.4,v 1.4 2010/01/28 18:15:19 mav Exp $
 .\"
-.Dd August 24, 2009
+.Dd January 28, 2010
 .Dt AHCI 4
 .Os
 .Sh NAME
@@ -114,14 +114,11 @@
 etc.
 .Pp
 Driver features include support for Serial ATA and ATAPI devices,
-Port Multipliers, hardware command queues (up to 32 commands per port),
+Port Multipliers (including FIS-based switching, when supported),
+hardware command queues (up to 32 commands per port),
 Native Command Queuing, SATA interface Power Management, device hot-plug
 and Message Signaled Interrupts.
 .Pp
-The Port Multiplier FIS Based Switching feature added in the AHCI 1.2
-specification, which is required for effective parallel operation of devices
-behind Port Multipliers, is not yet supported.
-.Pp
 AHCI hardware is also supported by ataahci driver from
 .Xr ata 4
 subsystem. If both drivers are loaded at the same time, this one will be
@@ -131,6 +128,10 @@
 .Nm
 driver supports AHCI compatible controllers having PCI class 1 (mass storage),
 subclass 6 (SATA) and programming interface 1 (AHCI).
+.Pp
+Also, in cooperation with atamarvell and atajmicron drivers of ata(4),
+it supports AHCI part of legacy-PATA + AHCI-SATA combined controllers,
+such as JMicron JMB36x and Marvell 88SX61xx.
 .Sh SEE ALSO
 .Xr ada 4 ,
 .Xr cd 4 ,

==== //depot/projects/scottl-camlock/src/share/man/man4/gpib.4#2 (text+ko) ====

@@ -22,7 +22,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man4/gpib.4,v 1.2 2010/01/25 06:37:44 joerg Exp $
+.\" $FreeBSD: src/share/man/man4/gpib.4,v 1.3 2010/01/28 19:12:40 joerg Exp $
 .\"
 .Dd January 24, 2010
 .Dt GPIB 4
@@ -88,7 +88,7 @@
 .El
 .Sh SEE ALSO
 .\" .Xr libgpib 3 ,
-.Xr gpib 4 ,
+.Xr pcii 4 ,
 .Xr tnt4882 4
 .Sh HISTORY
 The

==== //depot/projects/scottl-camlock/src/share/man/man9/locking.9#3 (text+ko) ====

@@ -22,17 +22,14 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.\" $FreeBSD: src/share/man/man9/locking.9,v 1.12 2007/11/08 14:47:54 ups Exp $
+.\" $FreeBSD: src/share/man/man9/locking.9,v 1.15 2010/01/28 21:14:12 trasz Exp $
 .\"
-.Dd March 14, 2007
+.Dd January 29, 2010
 .Dt LOCKING 9
 .Os
 .Sh NAME
 .Nm locking
 .Nd kernel synchronization primitives
-.Sh SYNOPSIS
-All sorts of stuff to go here.
-.Pp
 .Sh DESCRIPTION
 The
 .Em FreeBSD
@@ -43,21 +40,19 @@
 These include:
 .Bl -enum
 .It
-Spin Mutexes
+Mutexes
 .It
-Sleep Mutexes
+Spin mutexes
 .It
-pool Mutexes
+Pool mutexes
 .It
-Shared-Exclusive locks
+Shared/exclusive locks
 .It
-Reader-Writer locks
+Reader/writer locks
 .It
-Read-Mostly locks
+Read-mostly locks
 .It
-Turnstiles
-.It
-Semaphores
+Counting semaphores
 .It
 Condition variables
 .It
@@ -70,62 +65,45 @@
 .Pp
 The primitives interact and have a number of rules regarding how
 they can and can not be combined.
-There are too many for the average
-human mind and they keep changing.
-(if you disagree, please write replacement text)  :-)
-.Pp
-Some of these primitives may be used at the low (interrupt) level and
-some may not.
-.Pp
-There are strict ordering requirements and for some of the types this
-is checked using the
+Many of these rules are checked using the
 .Xr witness 4
 code.
 .Pp
-.Ss SPIN Mutexes
-Mutexes are the basic primitive.
-You either hold it or you don't.
-If you don't own it then you just spin, waiting for the holder (on
-another CPU) to release it.
-Hopefully they are doing something fast.
+.Ss Mutexes
+Mutexes are the most commonly used synchronization primitive in the kernel.
+Thread acquires (locks) a mutex before accessing data shared with other
+threads (including interrupt threads), and releases (unlocks) it afterwards.
+If the mutex cannot be acquired, the thread requesting it will sleep.
+Mutexes fully support priority propagation.
+.Pp
+See
+.Xr mutex 9
+for details.
+.Ss Spin mutexes
+Spin mutexes are variation of basic mutexes; the main difference between
+the two is that spin mutexes never sleep - instead, they spin, waiting
+for the thread holding the lock, which runs on another CPU, to release it.
+Differently from ordinary mutex, spin mutexes disable interrupts when acquired.
+Since disabling interrupts is expensive, they are also generally slower.
+Spin mutexes should only be used to protect data shared with primary
+(INTR_FILTER) interrupt code.
 You 
 .Em must not
 do anything that deschedules the thread while you
-are holding a SPIN mutex.
-.Ss Mutexes
-Basically (regular) mutexes will deschedule the thread if the
-mutex can not be acquired.
-A non-spin mutex can be considered to be equivalent
-to getting a write lock on an 
-.Em rw_lock
-(see below), and in fact non-spin mutexes and rw_locks may soon become the same thing.
-As in spin mutexes, you either get it or you don't.
-You may only call the
-.Xr sleep 9
-call via
-.Fn msleep
-or the new
-.Fn mtx_sleep
-variant.
-These will atomically drop the mutex and reacquire it
-as part of waking up.
-This is often however a
-.Em BAD
-idea because it generally relies on you having
-such a good knowledge of all the call graph above you
-and what assumptions it is making that there are a lot
-of ways to make hard-to-find mistakes.
-For example you MUST re-test all the assumptions you made before,
-all the way up the call graph to where you got the lock.
-You can not just assume that mtx_sleep can be inserted anywhere.
-If any caller above you has any mutex or
-rwlock, your sleep, will cause a panic.
-If the sleep only happens rarely it may be years before the 
-bad code path is found.
-.Ss Pool Mutexes
-A variant of regular mutexes where the allocation of the mutex is handled
-more by the system.
-.Ss Rw_locks
+are holding a spin mutex.
+.Ss Pool mutexes
+With most synchronisaton primitives, such as mutexes, programmer must
+provide a piece of allocated memory to hold the primitive.
+For example, a mutex may be embedded inside the structure it protects.
+Pool mutex is a variant of mutex without this requirement - to lock or unlock
+a pool mutex, one uses address of the structure being protected with it,
+not the mutex itself.
+Pool mutexes are seldom used.
+.Pp
+See
+.Xr mtx_pool 9
+for details.
+.Ss Reader/writer locks
 Reader/writer locks allow shared access to protected data by multiple threads,
 or exclusive access by a single thread.
 The threads with shared access are known as
@@ -135,23 +113,12 @@
 .Em writer
 since it may modify protected data.
 .Pp
-Although reader/writer locks look very similar to
-.Xr sx 9
-(see below) locks, their usage pattern is different.
 Reader/writer locks can be treated as mutexes (see above and
 .Xr mutex 9 )
 with shared/exclusive semantics.
 More specifically, regular mutexes can be 
 considered to be equivalent to a write-lock on an
 .Em rw_lock.
-In the future this may in fact
-become literally the fact.
-An
-.Em rw_lock
-can be locked while holding a regular mutex, but 
-can
-.Em not
-be held while sleeping.
 The
 .Em rw_lock
 locks have priority propagation like mutexes, but priority
@@ -163,54 +130,48 @@
 can recurse, but exclusive locks are not allowed to recurse.
 This ability should not be used lightly and 
 .Em may go away.
-Users of recursion in any locks should be prepared to 
-defend their decision against vigorous criticism.
-.Ss Rm_locks
+.Pp
+See
+.Xr rwlock 9
+for details.
+.Ss Read-mostly locks
 Mostly reader locks are similar to
-.Em Reader/write
-locks but optimized for very infrequent 
-.Em writer
-locking.
-.Em rm_lock
+.Em reader/writer
+locks but optimized for very infrequent write locking.
+.Em Read-mostly
 locks implement full priority propagation by tracking shared owners
 using a lock user supplied
 .Em tracker
 data structure.
-.Ss Sx_locks
-Shared/exclusive locks are used to protect data that are read far more often
-than they are written.
-Mutexes are inherently more efficient than shared/exclusive locks, so
-shared/exclusive locks should be used prudently.
-The main reason for using an
-.Em sx_lock
-is that a thread may hold a shared or exclusive lock on an
-.Em sx_lock
-lock while sleeping.
-As a consequence of this however, an
-.Em sx_lock
-lock may not be acquired while holding a mutex.
-The reason for this is that, if one thread slept while holding an
-.Em sx_lock
-lock while another thread blocked on the same
-.Em sx_lock
-lock after acquiring a mutex, then the second thread would effectively
-end up sleeping while holding a mutex, which is not allowed.
-The
-.Em sx_lock
-should be considered to be closely related to
+.Pp
+See
+.Xr rmlock 9
+for details.
+.Ss Shared/exclusive locks
+Shared/exclusive locks are similar to reader/writer locks; the main difference
+between them is that shared/exclusive locks may be held during unbounded sleep
+(and may thus perform an unbounded sleep).
+They are inherently less efficient than mutexes, reader/writer locks
+and read-mostly locks.  They don't support priority propagation.
+They should be considered to be closely related to
 .Xr sleep 9 .
 In fact it could in some cases be 
 considered a conditional sleep.
-.Ss Turnstiles
-Turnstiles are used to hold a queue of threads blocked on
-non-sleepable locks.
-Sleepable locks use condition variables to implement their queues.
-Turnstiles differ from a sleep queue in that turnstile queue's
-are assigned to a lock held by an owning thread.
-Thus, when one thread is enqueued onto a turnstile, it can lend its
-priority to the owning thread.
-If this sounds confusing, we need to describe it better.
-.Ss Semaphores
+.Pp
+See
+.Xr sx 9
+for details.
+.Ss Counting semaphores
+Counting semaphores provide a mechanism for synchronizing access
+to a pool of resources.
+Unlike mutexes, semaphores do not have the concept of an owner,
+so they can be useful in situations where one thread needs
+to acquire a resource, and another thread needs to release it.
+They are largely deprecated.
+.Pp
+See
+.Xr sema 9
+for details.
 .Ss Condition variables
 Condition variables are used in conjunction with mutexes to wait for
 conditions to occur.
@@ -220,9 +181,12 @@
 When a thread waits on a condition, the mutex
 is atomically released before the thread is blocked, then reacquired
 before the function call returns.
+.Pp
+See
+.Xr condvar 9
+for details.
 .Ss Giant
-Giant is a special instance of a sleep lock.
-It has several special characteristics.
+Giant is an instance of a mutex, with some special characteristics:
 .Bl -enum
 .It
 It is recursive.
@@ -237,7 +201,7 @@
 There are places in the kernel that drop Giant and pick it back up
 again.
 Sleep locks will do this before sleeping.
-Parts of the Network or VM code may do this as well, depending on the
+Parts of the network or VM code may do this as well, depending on the
 setting of a sysctl.
 This means that you cannot count on Giant keeping other code from
 running if your code sleeps, even if you want it to.
@@ -298,26 +262,72 @@
 .Va Giant
 mutex before the function returns.
 .Pp
-.Ss lockmanager locks
-Largely deprecated.
-See the
+See
+.Xr sleep 9
+for details.
+.Pp
+.Ss Lockmanager locks
+Shared/exclusive locks, used mostly in
+.Xr VFS 9 ,
+in particular as a
+.Xr vnode 9
+lock.
+They have features other lock types don't have, such as sleep timeout,
+writer starvation avoidance, draining, and interlock mutex, but this makes them
+complicated to implement; for this reason, they are deprecated.
+.Pp
+See
 .Xr lock 9
-page for more information.
-I don't know what the downsides are but I'm sure someone will fill in this part.
-.Sh Usage tables.
-.Ss Interaction table.
+for details.
+.Sh INTERACTIONS
+.Ss Bounded vs. unbounded sleep
+The following primitives perform bounded sleep: mutexes, pool mutexes,
+reader/writer locks and read-mostly locks.
+.Pp
+The following primitives block (perform unbounded sleep): shared/exclusive locks,
+counting semaphores, condition variables, sleep/wakeup and lockmanager locks.
+.Pp
+It is an error to do any operation that could result in any kind of sleep while
+holding spin mutex.
+.Pp
+As a general rule, it is an error to do any operation that could result
+in unbounded sleep while holding any primitive from the 'bounded sleep' group.
+For example, it is an error to try to acquire shared/exclusive lock while
+holding mutex, or to try to allocate memory with M_WAITOK while holding
+read-write lock.
+.Pp
+As a special case, it is possible to call
+.Fn sleep 9
+or
+.Fn mtx_sleep 9
+while holding a mutex.
+It will atomically drop the mutex and reacquire it
+as part of waking up.
+This is often however a bad
+idea because it generally relies on you having
+such a good knowledge of all the call graph above you
+and what assumptions it is making that there are a lot
+of ways to make hard-to-find mistakes.
+For example you must re-test all the assumptions you made before,
+all the way up the call graph to where you got the lock.
+You can not just assume that mtx_sleep can be inserted anywhere.
+If any caller above you has any mutex or
+rwlock, your sleep, will cause a panic.
+If the sleep only happens rarely it may be years before the 
+bad code path is found.
+.Ss Interaction table
 The following table shows what you can and can not do if you hold
 one of the synchronization primitives discussed here:
 (someone who knows what they are talking about should write this table)
-.Bl -column ".Ic xxxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXX" -offset indent
+.Bl -column ".Ic xxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXX" -offset indent
 .It Xo
-.Em "You have: You want:" Ta Spin_mtx Ta Slp_mtx Ta sx_lock Ta rw_lock Ta rm_lock Ta sleep
+.Em "You have: You want:" Ta spin mtx Ta mutex Ta sx Ta rwlock Ta rmlock Ta sleep
 .Xc
-.It Ic SPIN mutex  Ta \&ok-1 Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no-3
-.It Ic Sleep mutex Ta \&ok Ta \&ok-1 Ta \&no Ta \&ok Ta \&ok Ta \&no-3
-.It Ic sx_lock     Ta \&ok Ta \&ok Ta \&ok-2 Ta \&ok Ta \&ok Ta \&ok-4
-.It Ic rw_lock     Ta \&ok Ta \&ok Ta \&no Ta \&ok-2 Ta \&ok Ta \&no-3
-.It Ic rm_lock     Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&ok-2 Ta \&no
+.It Ic spin mtx  Ta \&ok-1 Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no-3
+.It Ic mutex     Ta \&ok Ta \&ok-1 Ta \&no Ta \&ok Ta \&ok Ta \&no-3
+.It Ic sx        Ta \&ok Ta \&ok Ta \&ok-2 Ta \&ok Ta \&ok Ta \&ok-4
+.It Ic rwlock    Ta \&ok Ta \&ok Ta \&no Ta \&ok-2 Ta \&ok Ta \&no-3
+.It Ic rmlock    Ta \&ok Ta \&ok Ta \&no Ta \&ok Ta \&ok-2 Ta \&no
 .El
 .Pp
 .Em *1
@@ -342,12 +352,12 @@
 .Fn sx_sleep
 which atomically release this primitive when going to sleep and
 reacquire it on wakeup.
-.Ss Context mode table.
+.Ss Context mode table
 The next table shows what can be used in different contexts.
 At this time this is a rather easy to remember table.
-.Bl -column ".Ic Xxxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXX" -offset indent
+.Bl -column ".Ic Xxxxxxxxxxxxxxxxxxx" ".Xr XXXXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXXX" ".Xr XXXXXX" -offset indent
 .It Xo
-.Em "Context:" Ta Spin_mtx Ta Slp_mtx Ta sx_lock Ta rw_lock Ta rm_lock Ta sleep
+.Em "Context:" Ta spin mtx Ta mutex Ta sx Ta rwlock Ta rmlock Ta sleep
 .Xc
 .It interrupt:  Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no 
 .It idle:  Ta \&ok Ta \&no Ta \&no Ta \&no Ta \&no Ta \&no 
@@ -362,11 +372,13 @@
 .Xr sema 9 ,
 .Xr sleep 9 ,
 .Xr sx 9 ,
-.Xr LOCK_PROFILING 9 ,
-.Xr WITNESS 9
+.Xr witness 9 ,
+.Xr LOCK_PROFILING 9
 .Sh HISTORY
 These
 functions appeared in
 .Bsx 4.1
 through
 .Fx 7.0
+.Sh BUGS
+There are too many locking primitives to choose from.

==== //depot/projects/scottl-camlock/src/share/misc/committers-src.dot#9 (text+ko) ====

@@ -1,4 +1,4 @@
-# $FreeBSD: src/share/misc/committers-src.dot,v 1.103 2009/12/10 14:41:47 kib Exp $
+# $FreeBSD: src/share/misc/committers-src.dot,v 1.104 2010/01/28 19:41:26 uqs Exp $
 
 # This file is meant to list all FreeBSD src committers and describe the
 # mentor-mentee relationships between them.
@@ -187,6 +187,7 @@
 trhodes [label="Tom Rhodes\ntrhodes@FreeBSD.org\n2002/05/28"]
 tuexen [label="Michael Tuexen\ntuexen@FreeBSD.org\n2009/06/06"]
 ume [label="Hajimu UMEMOTO\nume@FreeBSD.org\n2000/02/26"]
+uqs [label="Ulrich Spoerlein\nuqs@FreeBSD.org\n2010/01/28"]
 vanhu [label="Yvan Vanhullebus\nvanhu@FreeBSD.org\n2008/07/21"]
 versus [label="Konrad Jankowski\nversus@FreeBSD.org\n2008/10/27"]
 weongyo [label="Weongyo Jeong\nweongyo@FreeBSD.org\n2007/12/21"]
@@ -398,6 +399,7 @@
 philip -> ed
 philip -> jls
 philip -> matteo
+philip -> uqs
 
 pjd -> kib
 pjd -> lulf

==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_all.c#36 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.12 2009/12/28 20:08:01 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_all.c,v 1.13 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 

==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_da.c#48 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.14 2009/12/28 20:08:01 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_da.c,v 1.15 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 

==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_pmp.c#31 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_pmp.c,v 1.5 2009/12/07 16:23:25 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_pmp.c,v 1.6 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 

==== //depot/projects/scottl-camlock/src/sys/cam/ata/ata_xpt.c#74 (text+ko) ====

@@ -25,7 +25,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.19 2010/01/10 09:20:56 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/ata/ata_xpt.c,v 1.20 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>

==== //depot/projects/scottl-camlock/src/sys/cam/cam.c#16 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam.c,v 1.15 2009/11/11 11:10:36 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam.c,v 1.16 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #ifdef _KERNEL

==== //depot/projects/scottl-camlock/src/sys/cam/cam.h#13 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam.h,v 1.16 2009/11/03 11:19:05 mav Exp $
+ * $FreeBSD: src/sys/cam/cam.h,v 1.17 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_ccb.h#38 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_ccb.h,v 1.42 2009/11/26 08:49:46 mav Exp $
+ * $FreeBSD: src/sys/cam/cam_ccb.h,v 1.43 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_CCB_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_periph.c#52 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.87 2009/11/14 20:30:42 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_periph.c,v 1.88 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/scottl-camlock/src/sys/cam/cam_periph.h#27 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_periph.h,v 1.23 2009/12/06 11:48:53 mav Exp $
+ * $FreeBSD: src/sys/cam/cam_periph.h,v 1.24 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_PERIPH_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_queue.h#9 (text+ko) ====

@@ -25,7 +25,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_queue.h,v 1.12 2009/11/14 20:30:42 mav Exp $
+ * $FreeBSD: src/sys/cam/cam_queue.h,v 1.13 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_QUEUE_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_sim.c#14 (text+ko) ====

@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.13 2008/12/19 14:33:29 trasz Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_sim.c,v 1.14 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.c#146 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.236 2009/11/24 12:47:58 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.237 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt.h#23 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_xpt.h,v 1.10 2009/07/10 08:18:08 scottl Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt.h,v 1.11 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_XPT_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_internal.h#17 (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/cam/cam_xpt_internal.h,v 1.5 2009/11/11 11:10:36 mav Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_internal.h,v 1.6 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_XPT_INTERNAL_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_periph.h#14 (text+ko) ====

@@ -27,7 +27,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_xpt_periph.h,v 1.8 2009/07/10 08:18:08 scottl Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_periph.h,v 1.9 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_XPT_PERIPH_H

==== //depot/projects/scottl-camlock/src/sys/cam/cam_xpt_sim.h#7 (text+ko) ====

@@ -26,7 +26,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/cam/cam_xpt_sim.h,v 1.10 2009/01/08 17:26:51 trasz Exp $
+ * $FreeBSD: src/sys/cam/cam_xpt_sim.h,v 1.11 2010/01/28 08:41:30 mav Exp $
  */
 
 #ifndef _CAM_CAM_XPT_SIM_H

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_all.c#15 (text+ko) ====

@@ -28,7 +28,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.56 2009/10/23 08:27:55 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_all.c,v 1.57 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_cd.c#38 (text+ko) ====

@@ -46,7 +46,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.116 2009/12/18 14:41:30 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_cd.c,v 1.117 2010/01/28 08:41:30 mav Exp $");
 
 #include "opt_cd.h"
 

==== //depot/projects/scottl-camlock/src/sys/cam/scsi/scsi_ch.c#22 (text+ko) ====

@@ -68,7 +68,7 @@
  */
 
 #include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_ch.c,v 1.50 2009/11/14 20:13:38 mav Exp $");
+__FBSDID("$FreeBSD: src/sys/cam/scsi/scsi_ch.c,v 1.51 2010/01/28 08:41:30 mav Exp $");
 
 #include <sys/param.h>
 #include <sys/queue.h>

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



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