Changeset View
Changeset View
Standalone View
Standalone View
head/sys/cam/scsi/scsi_xpt.c
Show First 20 Lines • Show All 1,553 Lines • ▼ Show 20 Lines | case PROBE_SERIAL_NUM: | ||||
} else if (cam_ccb_status(done_ccb) == CAM_REQ_CMP | } else if (cam_ccb_status(done_ccb) == CAM_REQ_CMP | ||||
&& (serial_buf->length > 0)) { | && (serial_buf->length > 0)) { | ||||
have_serialnum = 1; | have_serialnum = 1; | ||||
path->device->serial_num = | path->device->serial_num = | ||||
(u_int8_t *)malloc((serial_buf->length + 1), | (u_int8_t *)malloc((serial_buf->length + 1), | ||||
M_CAMXPT, M_NOWAIT); | M_CAMXPT, M_NOWAIT); | ||||
if (path->device->serial_num != NULL) { | if (path->device->serial_num != NULL) { | ||||
int start, slen; | |||||
start = strspn(serial_buf->serial_num, " "); | |||||
slen = serial_buf->length - start; | |||||
if (slen <= 0) { | |||||
/* | |||||
* SPC5r05 says that an all-space serial | |||||
* number means no product serial number | |||||
* is available | |||||
*/ | |||||
slen = 0; | |||||
} | |||||
memcpy(path->device->serial_num, | memcpy(path->device->serial_num, | ||||
serial_buf->serial_num, | &serial_buf->serial_num[start], slen); | ||||
serial_buf->length); | path->device->serial_num_len = slen; | ||||
path->device->serial_num_len = | path->device->serial_num[slen] = '\0'; | ||||
serial_buf->length; | |||||
path->device->serial_num[serial_buf->length] | |||||
= '\0'; | |||||
} | } | ||||
} else if (cam_periph_error(done_ccb, 0, | } else if (cam_periph_error(done_ccb, 0, | ||||
SF_RETRY_UA|SF_NO_PRINT, | SF_RETRY_UA|SF_NO_PRINT, | ||||
&softc->saved_ccb) == ERESTART) { | &softc->saved_ccb) == ERESTART) { | ||||
goto outr; | goto outr; | ||||
} else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { | } else if ((done_ccb->ccb_h.status & CAM_DEV_QFRZN) != 0) { | ||||
/* Don't wedge the queue */ | /* Don't wedge the queue */ | ||||
xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, | xpt_release_devq(done_ccb->ccb_h.path, /*count*/1, | ||||
▲ Show 20 Lines • Show All 1,506 Lines • Show Last 20 Lines |