pvscsi: Advertise maxio of 256k.

While the PV SCSI SG list can handle 512k of SG entries, it can only do
so for I/O that's aligned to 4k or better. newfs_msdos does unaligned
I/O, so triggers too long for host errors in cam when a 512k I/O is
attempted. Prefer power of 2 256k to the absolute maximum 508k, though
that can be revisited should the latter show to give significant
performance improvement.

MFC After:		3 days
Tested by:		darius on discord (508k version of patch)
Sponsored by:		Netflix
This commit is contained in:
Warner Losh 2021-04-21 12:10:42 -06:00
parent 89c3c32647
commit 9a5a5c1576

View File

@ -1423,7 +1423,8 @@ pvscsi_action(struct cam_sim *sim, union ccb *ccb)
strlcpy(cpi->sim_vid, "VMware", SIM_IDLEN);
strlcpy(cpi->hba_vid, "VMware", HBA_IDLEN);
strlcpy(cpi->dev_name, cam_sim_name(sim), DEV_IDLEN);
cpi->maxio = PVSCSI_MAX_SG_ENTRIES_PER_SEGMENT * PAGE_SIZE;
/* Limit I/O to 256k since we can't do 512k unaligned I/O */
cpi->maxio = (PVSCSI_MAX_SG_ENTRIES_PER_SEGMENT / 2) * PAGE_SIZE;
cpi->protocol = PROTO_SCSI;
cpi->protocol_version = SCSI_REV_SPC2;
cpi->transport = XPORT_SAS;