Print this page
8074 need to add FMA event for SSD wearout

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/fm/eversholt/files/common/disk.esc
          +++ new/usr/src/cmd/fm/eversholt/files/common/disk.esc
↓ open down ↓ 12 lines elided ↑ open up ↑
  13   13   * When distributing Covered Code, include this CDDL HEADER in each
  14   14   * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
       23 + * Copyright 2016 Nexenta Systems, Inc.  All rights reserved.
  23   24   */
  24   25  
  25   26  #pragma dictionary "DISK"
  26   27  
  27   28  #define P                       disk
  28   29  
  29   30  fru P;
  30   31  asru P;
  31   32  
  32   33  /*
↓ open down ↓ 4 lines elided ↑ open up ↑
  37   38  
  38   39  /*
  39   40   * SERD engine for media error fault propagation:
  40   41   *
  41   42   * This strategy is designed to give a file system, like ZFS, the
  42   43   * ability to attempt data recovery/relocation without faulting a disk.
  43   44   * This implementation depends on a file system retry to the same lba
  44   45   * to trigger a fault when recovery/relocation is not possible.
  45   46   *
  46   47   * We let the engine propagate one error only once every 1 minute and then if we
  47      - * still get 2 or more * errors within 24 hours for the same LBA, there is a fault.
       48 + * still get 2 or more errors within 24 hours for the same LBA,
       49 + * there is a fault.
  48   50   */
  49   51  engine serd.io.scsi.cmd.disk.dev.rqs.merr@P, N=1, T=24h;
  50   52  
  51   53  /*
  52   54   * disk-as-detector: fault events.
  53   55   */
  54   56  event fault.io.scsi.cmd.disk.dev.rqs.derr@P;
  55   57  event fault.io.scsi.cmd.disk.dev.rqs.merr@P,
  56   58      engine=serd.io.scsi.cmd.disk.dev.rqs.merr@P;
  57   59  
↓ open down ↓ 120 lines elided ↑ open up ↑
 178  180  
 179  181  /*
 180  182   * Fault events.
 181  183   */
 182  184  event fault.io.disk.over-temperature@P,
 183  185      FITrate=10, FRU=P, ASRU=P;
 184  186  event fault.io.disk.predictive-failure@P, FITrate=10,
 185  187      FITrate=10, FRU=P, ASRU=P;
 186  188  event fault.io.disk.self-test-failure@P, FITrate=10,
 187  189      FITrate=10, FRU=P, ASRU=P;
      190 +event fault.io.disk.ssm-wearout@P;
 188  191  
 189  192  /*
 190  193   * ereports.
 191  194   */
 192  195  event ereport.io.scsi.disk.over-temperature@P;
 193  196  event ereport.io.scsi.disk.predictive-failure@P;
 194  197  event ereport.io.scsi.disk.self-test-failure@P;
      198 +event ereport.io.scsi.disk.ssm-wearout@P;
 195  199  
 196  200  /*
 197  201   * Propagations.
 198  202   */
 199  203  prop fault.io.disk.over-temperature@P ->
 200  204      ereport.io.scsi.disk.over-temperature@P;
 201  205  
 202  206  prop fault.io.disk.self-test-failure@P ->
 203  207      ereport.io.scsi.disk.self-test-failure@P;
 204  208  
 205  209  prop fault.io.disk.predictive-failure@P ->
 206  210      ereport.io.scsi.disk.predictive-failure@P {
 207  211      setpayloadprop("asc", payloadprop("additional-sense-code")) &&
 208  212      setpayloadprop("ascq", payloadprop("additional-sense-code-qualifier")) };
      213 +
      214 +prop fault.io.disk.ssm-wearout@P ->
      215 +    ereport.io.scsi.disk.ssm-wearout@P {
      216 +    setpayloadprop("current-wearout-percentage",
      217 +    payloadprop("current-ssm-wearout"))
      218 +    && setpayloadprop("threshold-wearout-percentage",
      219 +    payloadprop("threshold-ssm-wearout")) };
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX