17 * information: Portions Copyright [yyyy] [name of copyright owner] |
17 * information: Portions Copyright [yyyy] [name of copyright owner] |
18 * |
18 * |
19 * CDDL HEADER END |
19 * CDDL HEADER END |
20 */ |
20 */ |
21 /* |
21 /* |
22 * Copyright 2007 Sun Microsystems, Inc. All rights reserved. |
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. |
23 * Use is subject to license terms. |
23 * Use is subject to license terms. |
24 */ |
24 */ |
25 |
25 |
26 #pragma ident "%Z%%M% %I% %E% SMI" |
26 #pragma ident "%Z%%M% %I% %E% SMI" |
27 |
27 |
529 * picked up by the syseventd module, and any processing is done |
529 * picked up by the syseventd module, and any processing is done |
530 * as needed. |
530 * as needed. |
531 */ |
531 */ |
532 zfs_case_solve(hdl, zcp, "fault.fs.zfs.device", B_TRUE); |
532 zfs_case_solve(hdl, zcp, "fault.fs.zfs.device", B_TRUE); |
533 } else { |
533 } else { |
|
534 char *failmode = NULL; |
|
535 |
534 if (pool_state == SPA_LOAD_OPEN) { |
536 if (pool_state == SPA_LOAD_OPEN) { |
535 /* |
537 /* |
536 * Error incurred during a pool open. Reset the timer |
538 * Error incurred during a pool open. Reset the timer |
537 * associated with this case. |
539 * associated with this case. |
538 */ |
540 */ |
574 fmd_prop_get_int32(hdl, "checksum_N"), |
576 fmd_prop_get_int32(hdl, "checksum_N"), |
575 fmd_prop_get_int64(hdl, "checksum_T")); |
577 fmd_prop_get_int64(hdl, "checksum_T")); |
576 zfs_case_serialize(hdl, zcp); |
578 zfs_case_serialize(hdl, zcp); |
577 } |
579 } |
578 serd = zcp->zc_data.zc_serd_checksum; |
580 serd = zcp->zc_data.zc_serd_checksum; |
|
581 } else if (fmd_nvl_class_match(hdl, nvl, |
|
582 "ereport.fs.zfs.io_failure") && (nvlist_lookup_string(nvl, |
|
583 FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE, &failmode) == 0) && |
|
584 failmode != NULL) { |
|
585 if (strncmp(failmode, FM_EREPORT_FAILMODE_CONTINUE, |
|
586 strlen(FM_EREPORT_FAILMODE_CONTINUE)) == 0) { |
|
587 zfs_case_solve(hdl, zcp, |
|
588 "fault.fs.zfs.io_failure_continue", |
|
589 B_FALSE); |
|
590 } else if (strncmp(failmode, FM_EREPORT_FAILMODE_WAIT, |
|
591 strlen(FM_EREPORT_FAILMODE_WAIT)) == 0) { |
|
592 zfs_case_solve(hdl, zcp, |
|
593 "fault.fs.zfs.io_failure_wait", B_FALSE); |
|
594 } |
579 } |
595 } |
580 |
596 |
581 /* |
597 /* |
582 * Because I/O errors may be due to device removal, we postpone |
598 * Because I/O errors may be due to device removal, we postpone |
583 * any diagnosis until we're sure that we aren't about to |
599 * any diagnosis until we're sure that we aren't about to |