aboutsummaryrefslogtreecommitdiffstats
path: root/sys/dev/ciss/ciss.c
diff options
context:
space:
mode:
authorPaul Saab <ps@FreeBSD.org>2004-06-15 21:09:45 +0000
committerPaul Saab <ps@FreeBSD.org>2004-06-15 21:09:45 +0000
commit8926bbf81ad099e652a85322bb3994118d1b6658 (patch)
tree4f44062b6cd70de2923fd74638f212db0e1b3c0b /sys/dev/ciss/ciss.c
parent8b2e4a7c5d33440a0633ddfb7a1a9b3be0ddb59b (diff)
downloadsrc-8926bbf81ad099e652a85322bb3994118d1b6658.tar.gz
src-8926bbf81ad099e652a85322bb3994118d1b6658.zip
MFC: rev 1.47 and 1.48
Add a bunch of PCI device ID's and only do I/O to ONLINE volumes.
Notes
Notes: svn path=/stable/4/; revision=130543
Diffstat (limited to 'sys/dev/ciss/ciss.c')
-rw-r--r--sys/dev/ciss/ciss.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/sys/dev/ciss/ciss.c b/sys/dev/ciss/ciss.c
index 41ca82cd1dcf..5df1ccd18099 100644
--- a/sys/dev/ciss/ciss.c
+++ b/sys/dev/ciss/ciss.c
@@ -261,6 +261,23 @@ static struct
{ 0x0e11, 0x409B, CISS_BOARD_SA5, "HP Smart Array 642" },
{ 0x0e11, 0x409C, CISS_BOARD_SA5, "HP Smart Array 6400" },
{ 0x0e11, 0x409D, CISS_BOARD_SA5, "HP Smart Array 6400 EM" },
+ { 0x0e11, 0x409E, CISS_BOARD_SA5, "HP Smart Array 6422" },
+ { 0x103C, 0x3210, CISS_BOARD_SA5, "HP Smart Array V100" },
+ { 0x103C, 0x3220, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3222, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3230, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3231, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3232, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3233, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3234, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3235, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3236, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3237, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3238, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x3239, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x323A, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x323B, CISS_BOARD_SA5, "HP Smart Array" },
+ { 0x103C, 0x323C, CISS_BOARD_SA5, "HP Smart Array" },
{ 0, 0, 0, NULL }
};
@@ -2589,35 +2606,16 @@ ciss_cam_emulate(struct ciss_softc *sc, struct ccb_scsiio *csio)
*(u_int8_t *)csio->cdb_io.cdb_ptr : csio->cdb_io.cdb_bytes[0];
/*
- * Handle requests for volumes that don't exist. A selection timeout
- * is slightly better than an illegal request. Other errors might be
- * better.
+ * Handle requests for volumes that don't exist or are not online.
+ * A selection timeout is slightly better than an illegal request.
+ * Other errors might be better.
*/
- if (sc->ciss_logical[bus][target].cl_status == CISS_LD_NONEXISTENT) {
+ if (sc->ciss_logical[bus][target].cl_status != CISS_LD_ONLINE) {
csio->ccb_h.status = CAM_SEL_TIMEOUT;
xpt_done((union ccb *)csio);
return(1);
}
- /*
- * Handle requests for volumes that exist but are offline.
- *
- * I/O operations should fail, everything else should work.
- */
- if (sc->ciss_logical[bus][target].cl_status == CISS_LD_OFFLINE) {
- switch(opcode) {
- case READ_6:
- case READ_10:
- case READ_12:
- case WRITE_6:
- case WRITE_10:
- case WRITE_12:
- csio->ccb_h.status = CAM_SEL_TIMEOUT;
- xpt_done((union ccb *)csio);
- return(1);
- }
- }
-
/* if we have to fake Synchronise Cache */
if (sc->ciss_flags & CISS_FLAG_FAKE_SYNCH) {
/*