summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkc28005 <none@none>2007-04-30 13:20:49 -0700
committerkc28005 <none@none>2007-04-30 13:20:49 -0700
commit2900c43ad2343025a360dae18e319bd6a57827e0 (patch)
treecec518f47cdd6c3627b6d927f3d48532fe1aac3c
parentfd00680555e8f4173d02435c3b015e23cb232c49 (diff)
downloadillumos-joyent-2900c43ad2343025a360dae18e319bd6a57827e0.tar.gz
6545564 machine hang when uata tries to read bad block resulting in additional corrupted blocks/files.
-rw-r--r--usr/src/uts/sun/io/dada/targets/dad.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/usr/src/uts/sun/io/dada/targets/dad.c b/usr/src/uts/sun/io/dada/targets/dad.c
index 069ff3dbea..eba181b9f3 100644
--- a/usr/src/uts/sun/io/dada/targets/dad.c
+++ b/usr/src/uts/sun/io/dada/targets/dad.c
@@ -2723,7 +2723,9 @@ dcd_handle_incomplete(struct dcd_disk *un, struct buf *bp)
case CMD_INCOMPLETE:
action = dcd_check_error(un, bp);
DCD_DO_ERRSTATS(un, dcd_transerrs);
- (void) dcd_reset_disk(un, pkt);
+ if (action == COMMAND_HARD_ERROR) {
+ (void) dcd_reset_disk(un, pkt);
+ }
break;
case CMD_FATAL: