Changeset View
Changeset View
Standalone View
Standalone View
head/sys/cam/scsi/scsi_cd.c
Show First 20 Lines • Show All 1,051 Lines • ▼ Show 20 Lines | cddone(struct cam_periph *periph, union ccb *done_ccb) | ||||
{ | { | ||||
struct scsi_read_capacity_data *rdcap; | struct scsi_read_capacity_data *rdcap; | ||||
char *announce_buf; | char *announce_buf; | ||||
struct cd_params *cdp; | struct cd_params *cdp; | ||||
int error; | int error; | ||||
cdp = &softc->params; | cdp = &softc->params; | ||||
announce_buf = softc->announce_temp; | announce_buf = softc->announce_temp; | ||||
bzero(announce_buf, CD_ANNOUNCETMP_SZ); | |||||
rdcap = (struct scsi_read_capacity_data *)csio->data_ptr; | rdcap = (struct scsi_read_capacity_data *)csio->data_ptr; | ||||
cdp->disksize = scsi_4btoul (rdcap->addr) + 1; | cdp->disksize = scsi_4btoul (rdcap->addr) + 1; | ||||
cdp->blksize = scsi_4btoul (rdcap->length); | cdp->blksize = scsi_4btoul (rdcap->length); | ||||
/* | /* | ||||
* Retry any UNIT ATTENTION type errors. They | * Retry any UNIT ATTENTION type errors. They | ||||
▲ Show 20 Lines • Show All 54 Lines • ▼ Show 20 Lines | if ((csio->ccb_h.status & CAM_STATUS_MASK) == CAM_REQ_CMP || | ||||
const char *sense_key_desc; | const char *sense_key_desc; | ||||
const char *asc_desc; | const char *asc_desc; | ||||
scsi_sense_desc(sense_key, asc, ascq, | scsi_sense_desc(sense_key, asc, ascq, | ||||
&cgd.inq_data, | &cgd.inq_data, | ||||
&sense_key_desc, | &sense_key_desc, | ||||
&asc_desc); | &asc_desc); | ||||
snprintf(announce_buf, | snprintf(announce_buf, | ||||
sizeof(announce_buf), | CD_ANNOUNCETMP_SZ, | ||||
"Attempt to query device " | "Attempt to query device " | ||||
"size failed: %s, %s", | "size failed: %s, %s", | ||||
sense_key_desc, | sense_key_desc, | ||||
asc_desc); | asc_desc); | ||||
} else if ((have_sense == 0) | } else if ((have_sense == 0) | ||||
&& ((status & CAM_STATUS_MASK) == | && ((status & CAM_STATUS_MASK) == | ||||
CAM_SCSI_STATUS_ERROR) | CAM_SCSI_STATUS_ERROR) | ||||
&& (csio->scsi_status == | && (csio->scsi_status == | ||||
SCSI_STATUS_BUSY)) { | SCSI_STATUS_BUSY)) { | ||||
snprintf(announce_buf, | snprintf(announce_buf, | ||||
sizeof(announce_buf), | CD_ANNOUNCETMP_SZ, | ||||
"Attempt to query device " | "Attempt to query device " | ||||
"size failed: SCSI Status: %s", | "size failed: SCSI Status: %s", | ||||
scsi_status_string(csio)); | scsi_status_string(csio)); | ||||
} else if (SID_TYPE(&cgd.inq_data) == T_CDROM) { | } else if (SID_TYPE(&cgd.inq_data) == T_CDROM) { | ||||
/* | /* | ||||
* We only print out an error for | * We only print out an error for | ||||
* CDROM type devices. For WORM | * CDROM type devices. For WORM | ||||
* devices, we don't print out an | * devices, we don't print out an | ||||
▲ Show 20 Lines • Show All 2,564 Lines • Show Last 20 Lines |