The virtio-scsi driver in FreeBSD 9.2-RELEASE (and in -current) encodes CAM LUN identifiers into virtio-scsi identifiers in vtscsi_set_request_lun(). vtscsi_set_request_lun constructs the low byte (lun[3]) of the transport-layer LUN incorrectly, resulting in mapping LUNs [0-255] to LUN 0. For hypervisors and SCSI targets which emulate REPORT LUNs, this is harmless. For ones that do not, this may result in multiple CAM targets for a single physical target. Fix: Patch attached with fix. Fix is tested on qemu from git -master, with REPORT LUNs disabled. Fix is also tested on Google Compute Engine hypervisor. Patch attached with submission follows:
Responsible Changed From-To: freebsd-bugs->bryanv
Author: bryanv Date: Sun Jan 12 17:40:47 2014 New Revision: 260566 URL: http://svnweb.freebsd.org/changeset/base/260566 Log: Remove incorrect bit shift when assigning the LUN request field This caused duplicate targets appearing on Google Compute Engine instances. PR: kern/185626 Submitted by: Venkatesh Srinivas <venkateshs@google.com> MFC after: 3 days Modified: head/sys/dev/virtio/scsi/virtio_scsi.c Modified: head/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 15:35:03 2014 (r260565) +++ head/sys/dev/virtio/scsi/virtio_scsi.c Sun Jan 12 17:40:47 2014 (r260566) @@ -1539,7 +1539,7 @@ vtscsi_set_request_lun(struct ccb_hdr *c lun[0] = 1; lun[1] = ccbh->target_id; lun[2] = 0x40 | ((ccbh->target_lun >> 8) & 0x3F); - lun[3] = (ccbh->target_lun >> 8) & 0xFF; + lun[3] = ccbh->target_lun & 0xFF; } static void _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
State Changed From-To: open->closed Committed. Thanks!
*** Bug 186146 has been marked as a duplicate of this bug. ***