Lines Matching defs:hdl

136 static void zfs_purge_cases(fmd_hdl_t *hdl);
151 zfs_case_unserialize(fmd_hdl_t *hdl, fmd_case_t *cp)
155 zcp = fmd_hdl_zalloc(hdl, sizeof (zfs_case_t), FMD_SLEEP);
158 fmd_buf_read(hdl, cp, CASE_DATA, &zcp->zc_data,
162 fmd_hdl_free(hdl, zcp, sizeof (zfs_case_t));
173 zcp->zc_remove_timer = fmd_timer_install(hdl, zcp,
179 fmd_case_setspecific(hdl, cp, zcp);
188 zfs_other_serd_cases(fmd_hdl_t *hdl, const zfs_case_data_t *zfs_case)
203 fmd_serd_gc(hdl);
204 zfs_purge_cases(hdl);
227 fmd_serd_active(hdl, zcd->zc_serd_checksum)) {
231 fmd_serd_active(hdl, zcd->zc_serd_io)) {
235 fmd_serd_active(hdl, zcd->zc_serd_slow_io)) {
389 zfs_purge_cases(fmd_hdl_t *hdl)
393 libzfs_handle_t *zhdl = fmd_hdl_getspecific(hdl);
430 fmd_case_close(hdl, zcp->zc_case);
449 zfs_case_retire(fmd_hdl_t *hdl, zfs_case_t *zcp)
451 fmd_hdl_debug(hdl, "retiring case");
453 fmd_case_close(hdl, zcp->zc_case);
462 zfs_case_solve(fmd_hdl_t *hdl, zfs_case_t *zcp, const char *faultname)
467 fmd_hdl_debug(hdl, "solving fault '%s'", faultname);
474 detector = fmd_nvl_alloc(hdl, FMD_SLEEP);
485 fault = fmd_nvl_create_fault(hdl, faultname, 100, detector,
487 fmd_case_add_suspect(hdl, zcp->zc_case, fault);
491 fmd_case_solve(hdl, zcp->zc_case);
495 fmd_timer_remove(hdl, zcp->zc_remove_timer);
513 zfs_ereport_when(fmd_hdl_t *hdl, nvlist_t *nvl, er_timeval_t *when)
515 (void) hdl;
537 zfs_fm_serd_record(fmd_hdl_t *hdl, const char *name, fmd_event_t *ep,
540 int fired = fmd_serd_record(hdl, name, ep);
543 if (fired && (peers = zfs_other_serd_cases(hdl, &zcp->zc_data)) > 0) {
544 fmd_hdl_debug(hdl, "pool %llu is tracking %d other %s cases "
549 zfs_case_retire(hdl, zcp);
560 zfs_fm_recv(fmd_hdl_t *hdl, fmd_event_t *ep, nvlist_t *nvl, const char *class)
579 if (fmd_nvl_class_match(hdl, nvl, "sysevent.fs.zfs.*")) {
580 fmd_hdl_debug(hdl, "purging orphaned cases from %s",
582 zfs_purge_cases(hdl);
587 isresource = fmd_nvl_class_match(hdl, nvl, "resource.fs.zfs.*");
614 fmd_hdl_debug(hdl, "ignoring '%s' during import", class);
622 (fmd_nvl_class_match(hdl, nvl,
624 fmd_nvl_class_match(hdl, nvl,
626 fmd_nvl_class_match(hdl, nvl,
628 fmd_hdl_debug(hdl, "ignoring '%s' during pool open", class);
660 zfs_ereport_when(hdl, nvl, &er_when);
684 fmd_hdl_debug(hdl, "ignoring pool %llx, "
697 libzfs_handle_t *zhdl = fmd_hdl_getspecific(hdl);
710 fmd_hdl_debug(hdl, "ignoring pool %llx, "
732 fmd_hdl_debug(hdl, "discarding '%s for vdev %llu",
751 cs = fmd_case_open(hdl, NULL);
753 fmd_hdl_debug(hdl, "opening case for vdev %llu due to '%s'",
761 fmd_buf_create(hdl, cs, CASE_DATA, sizeof (zfs_case_data_t));
770 fmd_buf_write(hdl, cs, CASE_DATA, &data, sizeof (data));
772 zcp = zfs_case_unserialize(hdl, cs);
779 fmd_hdl_debug(hdl, "resource event '%s'", class);
781 if (fmd_nvl_class_match(hdl, nvl,
790 fmd_case_close(hdl, zcp->zc_case);
791 } else if (fmd_nvl_class_match(hdl, nvl,
803 fmd_timer_remove(hdl, zcp->zc_remove_timer);
808 fmd_serd_reset(hdl, zcp->zc_data.zc_serd_io);
810 fmd_serd_reset(hdl,
813 fmd_serd_reset(hdl,
815 } else if (fmd_nvl_class_match(hdl, nvl,
823 fmd_hdl_debug(hdl, "closing case after a "
825 fmd_case_close(hdl, zcp->zc_case);
835 fmd_case_add_ereport(hdl, zcp->zc_case, ep);
840 if (fmd_case_solved(hdl, zcp->zc_case))
844 fmd_hdl_debug(hdl, "error event '%s', vdev %llu", class,
847 fmd_hdl_debug(hdl, "error event '%s'", class);
863 if (fmd_nvl_class_match(hdl, nvl,
874 fmd_case_close(hdl, dcp->zc_case);
877 zfs_case_solve(hdl, zcp, "fault.fs.zfs.pool");
878 } else if (fmd_nvl_class_match(hdl, nvl,
883 zfs_case_solve(hdl, zcp, "fault.fs.zfs.log_replay");
884 } else if (fmd_nvl_class_match(hdl, nvl, "ereport.fs.zfs.vdev.*")) {
888 zfs_case_solve(hdl, zcp, "fault.fs.zfs.device");
889 } else if (fmd_nvl_class_match(hdl, nvl,
891 fmd_nvl_class_match(hdl, nvl,
893 fmd_nvl_class_match(hdl, nvl,
895 fmd_nvl_class_match(hdl, nvl,
897 fmd_nvl_class_match(hdl, nvl,
910 if (fmd_nvl_class_match(hdl, nvl,
925 fmd_serd_create(hdl, zcp->zc_data.zc_serd_io,
930 if (zfs_fm_serd_record(hdl, zcp->zc_data.zc_serd_io,
934 } else if (fmd_nvl_class_match(hdl, nvl,
951 fmd_serd_create(hdl,
959 zfs_fm_serd_record(hdl,
961 zfs_case_solve(hdl, zcp,
964 } else if (fmd_nvl_class_match(hdl, nvl,
988 fmd_hdl_debug(hdl, "ignoring '%s' for "
1007 fmd_serd_create(hdl,
1013 if (zfs_fm_serd_record(hdl,
1016 zfs_case_solve(hdl, zcp,
1019 } else if (fmd_nvl_class_match(hdl, nvl,
1026 zfs_case_solve(hdl, zcp,
1030 zfs_case_solve(hdl, zcp,
1033 } else if (fmd_nvl_class_match(hdl, nvl,
1048 fmd_timer_remove(hdl, zcp->zc_remove_timer);
1049 zcp->zc_remove_timer = fmd_timer_install(hdl, zcp, NULL,
1064 zfs_fm_timeout(fmd_hdl_t *hdl, id_t id, void *data)
1069 zfs_case_solve(hdl, zcp, "fault.fs.zfs.vdev.io");
1077 zfs_fm_close(fmd_hdl_t *hdl, fmd_case_t *cs)
1079 zfs_case_t *zcp = fmd_case_getspecific(hdl, cs);
1082 fmd_serd_destroy(hdl, zcp->zc_data.zc_serd_checksum);
1084 fmd_serd_destroy(hdl, zcp->zc_data.zc_serd_io);
1086 fmd_serd_destroy(hdl, zcp->zc_data.zc_serd_slow_io);
1088 fmd_timer_remove(hdl, zcp->zc_remove_timer);
1092 fmd_hdl_free(hdl, zcp, sizeof (zfs_case_t));
1112 _zfs_diagnosis_init(fmd_hdl_t *hdl)
1133 if (fmd_hdl_register(hdl, FMD_API_VERSION, &fmd_info) != 0) {
1140 fmd_hdl_setspecific(hdl, zhdl);
1142 (void) fmd_stat_create(hdl, FMD_STAT_NOALLOC, sizeof (zfs_stats) /
1147 _zfs_diagnosis_fini(fmd_hdl_t *hdl)
1158 fmd_hdl_debug(hdl, "removing case ena %llu",
1162 fmd_hdl_free(hdl, zcp, sizeof (zfs_case_t));
1169 zhdl = fmd_hdl_getspecific(hdl);