summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorscottl <scottl@FreeBSD.org>2007-02-15 15:36:15 +0000
committerscottl <scottl@FreeBSD.org>2007-02-15 15:36:15 +0000
commitf81a44a44965d60a3f9965c0350281724941a32f (patch)
tree955f72b639e35dc8c1027b2371728c94cbebfba1
parentb91f40d9ac14ae73ac8bb74d07a7b7bdcd611e6d (diff)
downloadFreeBSD-src-f81a44a44965d60a3f9965c0350281724941a32f.zip
FreeBSD-src-f81a44a44965d60a3f9965c0350281724941a32f.tar.gz
Fix spurious I/O errors when under high load.
Submitted by: Erich Chen
-rw-r--r--sys/dev/arcmsr/arcmsr.c6
-rw-r--r--sys/dev/arcmsr/arcmsr.h2
2 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/arcmsr/arcmsr.c b/sys/dev/arcmsr/arcmsr.c
index 7d8d807..0f3638c 100644
--- a/sys/dev/arcmsr/arcmsr.c
+++ b/sys/dev/arcmsr/arcmsr.c
@@ -52,6 +52,9 @@
** with scsi pass-through command
** add new device id of sas raid adapters
** code fit for SPARC64 & PPC
+** 1.20.00.14 02/05/2007 Erich Chen bug fix for incorrect ccb_h.status report
+** and cause g_vfs_done() read write error
+
******************************************************************************************
* $FreeBSD$
*/
@@ -1299,7 +1302,8 @@ static void arcmsr_executesrb(void *arg, bus_dma_segment_t *dm_segs, int nseg, i
}
pccb->ccb_h.status |= CAM_SIM_QUEUED;
if(acb->srboutstandingcount >= ARCMSR_MAX_OUTSTANDING_CMD) {
- pccb->ccb_h.status |= CAM_SCSI_BUSY;
+ pccb->ccb_h.status &= ~CAM_STATUS_MASK;
+ pccb->ccb_h.status |= CAM_REQUEUE_REQ;
arcmsr_srb_complete(srb, 0);
return;
}
diff --git a/sys/dev/arcmsr/arcmsr.h b/sys/dev/arcmsr/arcmsr.h
index 285d587..31cc728 100644
--- a/sys/dev/arcmsr/arcmsr.h
+++ b/sys/dev/arcmsr/arcmsr.h
@@ -37,7 +37,7 @@
**************************************************************************
* $FreeBSD$
*/
-#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.13 2006-8-18"
+#define ARCMSR_DRIVER_VERSION "Driver Version 1.20.00.14 2007-2-05"
#define ARCMSR_SCSI_INITIATOR_ID 255
#define ARCMSR_DEV_SECTOR_SIZE 512
#define ARCMSR_MAX_XFER_SECTORS 4096
OpenPOWER on IntegriCloud