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:
Andriy Gapon 2020-01-23 10:13:56 +00:00
parent ab15488f12
commit adbf6af741
2 changed files with 1 additions and 6 deletions

View File

@ -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_target = sc->vtscsi_max_target;
cpi->max_lun = sc->vtscsi_max_lun; 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->sim_vid, "FreeBSD", SIM_IDLEN);
strlcpy(cpi->hba_vid, "VirtIO", HBA_IDLEN); strlcpy(cpi->hba_vid, "VirtIO", HBA_IDLEN);

View File

@ -204,11 +204,6 @@ struct vtscsi_request {
*/ */
#define VTSCSI_RESERVED_REQUESTS 10 #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. * How to wait (or not) for request completion.
*/ */