PERFORCE change 163376 for review
Alexander Motin
mav at FreeBSD.org
Tue Jun 2 20:56:56 UTC 2009
http://perforce.freebsd.org/chv.cgi?CH=163376
Change 163376 by mav at mav_mavbook on 2009/06/02 20:56:08
Report absent drive via CAM_SEL_TIMEOUT error on any command,
same as SCSI. ATA unable to determine that error type so fast,
so use scan info for this.
Affected files ...
.. //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#11 edit
Differences ...
==== //depot/projects/scottl-camlock/src/sys/dev/ahci/ahci.c#11 (text+ko) ====
@@ -1668,6 +1668,12 @@
/* Common cases first */
case XPT_ATA_IO: /* Execute the requested I/O operation */
case XPT_SCSI_IO:
+ if ((((ATA_ATA_MASTER | ATA_ATAPI_MASTER) <<
+ ccb->ccb_h.target_id) & ch->devices) == 0) {
+ ccb->ccb_h.status = CAM_SEL_TIMEOUT;
+ xpt_done(ccb);
+ break;
+ }
ahci_begin_transaction(ch->dev, ccb);
break;
case XPT_EN_LUN: /* Enable LUN as a target */
@@ -1744,10 +1750,6 @@
{
struct ccb_pathinq *cpi = &ccb->cpi;
- if (ccb->ccb_h.target_id == CAM_TARGET_WILDCARD ||
- (((ATA_ATA_MASTER | ATA_ATAPI_MASTER) <<
- ccb->ccb_h.target_id) & ch->devices)) {
-
cpi->version_num = 1; /* XXX??? */
cpi->hba_inquiry = PI_SDTR_ABLE | PI_TAG_ABLE;
cpi->target_sprt = 0;
@@ -1764,15 +1766,12 @@
cpi->unit_number = cam_sim_unit(sim);
cpi->transport = XPORT_ATA;
cpi->transport_version = 2;
- if ((ATA_ATA_MASTER << ccb->ccb_h.target_id) & ch->devices)
+ if ((ATA_ATAPI_MASTER << ccb->ccb_h.target_id) & ch->devices)
+ cpi->protocol = PROTO_SCSI;
+ else
cpi->protocol = PROTO_ATA;
- else
- cpi->protocol = PROTO_SCSI;
cpi->protocol_version = SCSI_REV_2;
cpi->ccb_h.status = CAM_REQ_CMP;
- } else {
- ccb->ccb_h.status = CAM_REQ_INVALID;
- }
xpt_done(ccb);
break;
}
More information about the p4-projects
mailing list