virtio_scsi: use max target ID plus one as the initiator ID
This bus does not really have a concept of the initiator ID, so use a guaranteed dummy one that won't conflict with any real target. This change fixes a problem with virtio_scsi on GCE where disks get sequential target IDs starting from one. If there are seven or more disks, then a disk with the target ID of seven would not be discovered by FreeBSD as that ID was reserved as the initiator ID -- see scsi_scan_bus(). Discussed with: bryanv MFC after: 2 weeks Sponsored by: Panzura
This commit is contained in:
parent
ab15488f12
commit
adbf6af741
@ -937,7 +937,7 @@ vtscsi_cam_path_inquiry(struct vtscsi_softc *sc, struct cam_sim *sim,
|
||||
|
||||
cpi->max_target = sc->vtscsi_max_target;
|
||||
cpi->max_lun = sc->vtscsi_max_lun;
|
||||
cpi->initiator_id = VTSCSI_INITIATOR_ID;
|
||||
cpi->initiator_id = cpi->max_target + 1;
|
||||
|
||||
strlcpy(cpi->sim_vid, "FreeBSD", SIM_IDLEN);
|
||||
strlcpy(cpi->hba_vid, "VirtIO", HBA_IDLEN);
|
||||
|
@ -204,11 +204,6 @@ struct vtscsi_request {
|
||||
*/
|
||||
#define VTSCSI_RESERVED_REQUESTS 10
|
||||
|
||||
/*
|
||||
* Specification doesn't say, use traditional SCSI default.
|
||||
*/
|
||||
#define VTSCSI_INITIATOR_ID 7
|
||||
|
||||
/*
|
||||
* How to wait (or not) for request completion.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user