Mercurial > illumos > illumos-gate
changeset 3399:24dcc5339d8a
6498366 dadk should use d_severity instead of d_action for GDA_RECOVERABLE and GDA_FATAL in updating kstats.
author | marx |
---|---|
date | Wed, 10 Jan 2007 10:22:46 -0800 |
parents | 6253059e76ed |
children | 2427f35263a7 |
files | usr/src/uts/intel/io/dktp/dcdev/dadk.c |
diffstat | 1 files changed, 16 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/usr/src/uts/intel/io/dktp/dcdev/dadk.c Wed Jan 10 09:54:56 2007 -0800 +++ b/usr/src/uts/intel/io/dktp/dcdev/dadk.c Wed Jan 10 10:22:46 2007 -0800 @@ -20,7 +20,7 @@ */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -591,14 +591,14 @@ /* get model */ dep->dadk_model.value.c[0] = 0; dadk_ioc_string.is_buf = &dep->dadk_model.value.c[0]; - dadk_ioc_string.is_size = 16; + dadk_ioc_string.is_size = sizeof (dep->dadk_model.value.c); CTL_IOCTL(dadkp->dad_ctlobjp, DIOCTL_GETMODEL, (uintptr_t)&dadk_ioc_string, FKIOCTL | FNATIVE); /* get serial */ dep->dadk_serial.value.c[0] = 0; dadk_ioc_string.is_buf = &dep->dadk_serial.value.c[0]; - dadk_ioc_string.is_size = 16; + dadk_ioc_string.is_size = sizeof (dep->dadk_serial.value.c); CTL_IOCTL(dadkp->dad_ctlobjp, DIOCTL_GETSERIAL, (uintptr_t)&dadk_ioc_string, FKIOCTL | FNATIVE); @@ -1353,7 +1353,6 @@ struct dadk *dadkp = PKT2DADK(pktp); dadk_errstats_t *dep; int scb = *(char *)pktp->cp_scbp; - int action; if (scb == DERR_SUCCESS) { if (pktp->cp_retry != 0 && dadkp->dad_errstats != NULL) { @@ -1364,9 +1363,6 @@ return (COMMAND_DONE); } - /* check error code table */ - action = dadk_errtab[scb].d_action; - if (pktp->cp_retry) { err_blkno = pktp->cp_srtsec + ((pktp->cp_bytexfer - pktp->cp_resid) >> dadkp->dad_secshf); @@ -1376,10 +1372,18 @@ if (dadkp->dad_errstats != NULL) { dep = (dadk_errstats_t *)dadkp->dad_errstats->ks_data; - if (action == GDA_RETRYABLE) - dep->dadk_softerrs.value.ui32++; - else if (action == GDA_FATAL) - dep->dadk_harderrs.value.ui32++; + switch (dadk_errtab[scb].d_severity) { + case GDA_RETRYABLE: + dep->dadk_softerrs.value.ui32++; + break; + + case GDA_FATAL: + dep->dadk_harderrs.value.ui32++; + break; + + default: + break; + } switch (scb) { case DERR_INVCDB: @@ -1437,7 +1441,7 @@ (void) timeout(dadk_restart, (void *)pktp, DADK_BSY_TIMEOUT); } - return (action); + return (dadk_errtab[scb].d_action); } static void