summaryrefslogtreecommitdiff
path: root/sys/dev/raidframe/rf_driver.c
diff options
context:
space:
mode:
authoroster <oster@NetBSD.org>2004-11-16 16:45:51 +0000
committeroster <oster@NetBSD.org>2004-11-16 16:45:51 +0000
commitd7e754c41da2eeab50196f671b81a1704c3d5f76 (patch)
tree2d6c6ada2965e2384f18c6325a87e90e96242d0f /sys/dev/raidframe/rf_driver.c
parent297b6b1873abca623e18eb7abe790925ac90712a (diff)
On an idea from Thor (tls@), do not fail a component if doing so would
render the RAID set completely dead. Instead, we retry the IO a maximum of RF_RETRY_THRESHOLD times (currently '5'), and then just return an IO error if the IO fails. This should reduce the damage caused by having multiple disks appear to fail when the culprit is really something else (power, controllers, etc.)
Diffstat (limited to 'sys/dev/raidframe/rf_driver.c')
-rw-r--r--sys/dev/raidframe/rf_driver.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/dev/raidframe/rf_driver.c b/sys/dev/raidframe/rf_driver.c
index 1df8daf0442..81b7f090cd2 100644
--- a/sys/dev/raidframe/rf_driver.c
+++ b/sys/dev/raidframe/rf_driver.c
@@ -1,4 +1,4 @@
-/* $NetBSD: rf_driver.c,v 1.104 2004/06/29 17:09:01 oster Exp $ */
+/* $NetBSD: rf_driver.c,v 1.105 2004/11/16 16:45:51 oster Exp $ */
/*-
* Copyright (c) 1999 The NetBSD Foundation, Inc.
* All rights reserved.
@@ -73,7 +73,7 @@
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.104 2004/06/29 17:09:01 oster Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rf_driver.c,v 1.105 2004/11/16 16:45:51 oster Exp $");
#include "opt_raid_diagnostic.h"
@@ -573,6 +573,7 @@ rf_AllocRaidAccDesc(RF_Raid_t *raidPtr, RF_IoType_t type,
desc->dagList = NULL;
desc->status = 0;
+ desc->numRetries = 0;
#if RF_ACC_TRACE > 0
memset((char *) &desc->tracerec, 0, sizeof(RF_AccTraceEntry_t));
#endif