--- src/sys/bus/cam/cam_xpt.c 2007/11/28 22:11:02 1.46 +++ src/sys/bus/cam/cam_xpt.c 2007/11/28 22:21:48 1.47 @@ -5463,7 +5463,17 @@ probestart(struct cam_periph *periph, un if (softc->action == PROBE_INQUIRY) inquiry_len = SHORT_INQUIRY_LENGTH; else - inquiry_len = inq_buf->additional_length + 5; + inquiry_len = inq_buf->additional_length + + offsetof(struct scsi_inquiry_data, + additional_length) + 1; + + /* + * Some parallel SCSI devices fail to send an + * ignore wide residue message when dealing with + * odd length inquiry requests. Round up to be + * safe. + */ + inquiry_len = roundup2(inquiry_len, 2); scsi_inquiry(csio, /*retries*/4,