diff options
Diffstat (limited to 'module/zfs/include')
-rw-r--r-- | module/zfs/include/sys/fm/fs/zfs.h | 19 | ||||
-rw-r--r-- | module/zfs/include/sys/fm/protocol.h | 10 | ||||
-rw-r--r-- | module/zfs/include/sys/fm/util.h | 42 | ||||
-rw-r--r-- | module/zfs/include/sys/zfs_context.h | 7 | ||||
-rw-r--r-- | module/zfs/include/sys/zfs_ioctl.h | 3 |
5 files changed, 50 insertions, 31 deletions
diff --git a/module/zfs/include/sys/fm/fs/zfs.h b/module/zfs/include/sys/fm/fs/zfs.h index c752edc99..d5c71d174 100644 --- a/module/zfs/include/sys/fm/fs/zfs.h +++ b/module/zfs/include/sys/fm/fs/zfs.h @@ -35,7 +35,9 @@ extern "C" { #define FM_EREPORT_ZFS_CHECKSUM "checksum" #define FM_EREPORT_ZFS_IO "io" #define FM_EREPORT_ZFS_DATA "data" +#define FM_EREPORT_ZFS_CONFIG_SYNC "config.sync" #define FM_EREPORT_ZFS_POOL "zpool" +#define FM_EREPORT_ZFS_POOL_DESTROY "zpool.destroy" #define FM_EREPORT_ZFS_DEVICE_UNKNOWN "vdev.unknown" #define FM_EREPORT_ZFS_DEVICE_OPEN_FAILED "vdev.open_failed" #define FM_EREPORT_ZFS_DEVICE_CORRUPT_DATA "vdev.corrupt_data" @@ -43,9 +45,19 @@ extern "C" { #define FM_EREPORT_ZFS_DEVICE_BAD_GUID_SUM "vdev.bad_guid_sum" #define FM_EREPORT_ZFS_DEVICE_TOO_SMALL "vdev.too_small" #define FM_EREPORT_ZFS_DEVICE_BAD_LABEL "vdev.bad_label" +#define FM_EREPORT_ZFS_DEVICE_REMOVE "vdev.remove" +#define FM_EREPORT_ZFS_DEVICE_CLEAR "vdev.clear" +#define FM_EREPORT_ZFS_DEVICE_CHECK "vdev.check" +#define FM_EREPORT_ZFS_DEVICE_SPARE "vdev.spare" +#define FM_EREPORT_ZFS_DEVICE_AUTOEXPAND "vdev.autoexpand" #define FM_EREPORT_ZFS_IO_FAILURE "io_failure" #define FM_EREPORT_ZFS_PROBE_FAILURE "probe_failure" #define FM_EREPORT_ZFS_LOG_REPLAY "log_replay" +#define FM_EREPORT_ZFS_RESILVER_START "resilver.start" +#define FM_EREPORT_ZFS_RESILVER_FINISH "resilver.finish" +#define FM_EREPORT_ZFS_SCRUB_START "scrub.start" +#define FM_EREPORT_ZFS_SCRUB_FINISH "scrub.finish" +#define FM_EREPORT_ZFS_BOOTFS_VDEV_ATTACH "bootfs.vdev.attach" #define FM_EREPORT_PAYLOAD_ZFS_POOL "pool" #define FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE "pool_failmode" @@ -56,6 +68,7 @@ extern "C" { #define FM_EREPORT_PAYLOAD_ZFS_VDEV_PATH "vdev_path" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_DEVID "vdev_devid" #define FM_EREPORT_PAYLOAD_ZFS_VDEV_FRU "vdev_fru" +#define FM_EREPORT_PAYLOAD_ZFS_VDEV_STATE "vdev_state" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_GUID "parent_guid" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_TYPE "parent_type" #define FM_EREPORT_PAYLOAD_ZFS_PARENT_PATH "parent_path" @@ -85,9 +98,9 @@ extern "C" { #define FM_EREPORT_FAILMODE_CONTINUE "continue" #define FM_EREPORT_FAILMODE_PANIC "panic" -#define FM_RESOURCE_REMOVED "removed" -#define FM_RESOURCE_AUTOREPLACE "autoreplace" -#define FM_RESOURCE_STATECHANGE "statechange" +#define FM_EREPORT_RESOURCE_REMOVED "removed" +#define FM_EREPORT_RESOURCE_AUTOREPLACE "autoreplace" +#define FM_EREPORT_RESOURCE_STATECHANGE "statechange" #ifdef __cplusplus } diff --git a/module/zfs/include/sys/fm/protocol.h b/module/zfs/include/sys/fm/protocol.h index 5eca760da..1ee221286 100644 --- a/module/zfs/include/sys/fm/protocol.h +++ b/module/zfs/include/sys/fm/protocol.h @@ -69,6 +69,7 @@ extern "C" { /* ereport payload member names */ #define FM_EREPORT_DETECTOR "detector" #define FM_EREPORT_ENA "ena" +#define FM_EREPORT_TIME "time" /* list.* event payload member names */ #define FM_LIST_EVENT_SIZE "list-sz" @@ -327,16 +328,13 @@ extern "C" { #define FM_FMRI_SW_CTXT_ZONE "zone" #define FM_FMRI_SW_CTXT_CTID "ctid" #define FM_FMRI_SW_CTXT_STACK "stack" +#define FM_NVA_FREE 0 /* free allocator on nvlist_destroy */ +#define FM_NVA_RETAIN 1 /* keep allocator on nvlist_destroy */ extern nv_alloc_t *fm_nva_xcreate(char *, size_t); extern void fm_nva_xdestroy(nv_alloc_t *); - extern nvlist_t *fm_nvlist_create(nv_alloc_t *); extern void fm_nvlist_destroy(nvlist_t *, int); - -#define FM_NVA_FREE 0 /* free allocator on nvlist_destroy */ -#define FM_NVA_RETAIN 1 /* keep allocator on nvlist_destroy */ - extern void fm_ereport_set(nvlist_t *, int, const char *, uint64_t, const nvlist_t *, ...); extern void fm_payload_set(nvlist_t *, ...); @@ -350,8 +348,6 @@ extern void fm_fmri_cpu_set(nvlist_t *, int, const nvlist_t *, uint32_t, uint8_t *, const char *); extern void fm_fmri_mem_set(nvlist_t *, int, const nvlist_t *, const char *, const char *, uint64_t); -extern void fm_authority_set(nvlist_t *, int, const char *, const char *, - const char *, const char *); extern void fm_fmri_zfs_set(nvlist_t *, int, uint64_t, uint64_t); extern void fm_fmri_hc_create(nvlist_t *, int, const nvlist_t *, nvlist_t *, nvlist_t *, int, ...); diff --git a/module/zfs/include/sys/fm/util.h b/module/zfs/include/sys/fm/util.h index 37334101b..94947d67c 100644 --- a/module/zfs/include/sys/fm/util.h +++ b/module/zfs/include/sys/fm/util.h @@ -31,7 +31,6 @@ extern "C" { #endif #include <sys/nvpair.h> -#include <sys/errorq.h> /* * Shared user/kernel definitions for class length, error channel name, @@ -71,29 +70,42 @@ typedef struct erpt_dump { } erpt_dump_t; #ifdef _KERNEL -#include <sys/systm.h> -#define FM_STK_DEPTH 20 /* maximum stack depth */ -#define FM_SYM_SZ 64 /* maximum symbol size */ -#define FM_ERR_PIL 2 /* PIL for ereport_errorq drain processing */ +#define ZEVENT_SHUTDOWN 0x1 -#define FM_EREPORT_PAYLOAD_NAME_STACK "stack" +typedef void zevent_cb_t(nvlist_t *, nvlist_t *); -extern errorq_t *ereport_errorq; -extern void *ereport_dumpbuf; -extern size_t ereport_dumplen; +typedef struct zevent_s { + nvlist_t *ev_nvl; /* protected by the zevent_lock */ + nvlist_t *ev_detector; /* " */ + list_t ev_ze_list; /* " */ + list_node_t ev_node; /* " */ + zevent_cb_t *ev_cb; /* " */ +} zevent_t; + +typedef struct zfs_zevent { + zevent_t *ze_zevent; /* protected by the zevent_lock */ + list_node_t ze_node; /* " */ + uint64_t ze_dropped; /* " */ +} zfs_zevent_t; extern void fm_init(void); +extern void fm_fini(void); extern void fm_nvprint(nvlist_t *); -extern void fm_panic(const char *, ...); -extern void fm_banner(void); +extern void zfs_zevent_post(nvlist_t *, nvlist_t *, zevent_cb_t *); +extern void zfs_zevent_drain_all(int *); +extern int zfs_zevent_fd_hold(int, minor_t *, zfs_zevent_t **); +extern void zfs_zevent_fd_rele(int); +extern int zfs_zevent_next(zfs_zevent_t *, nvlist_t **, uint64_t *); +extern int zfs_zevent_wait(zfs_zevent_t *); +extern void zfs_zevent_init(zfs_zevent_t **); +extern void zfs_zevent_destroy(zfs_zevent_t *); -extern void fm_ereport_dump(void); -extern void fm_ereport_post(nvlist_t *, int); +#else -extern void fm_payload_stack_add(nvlist_t *, const pc_t *, int); +static inline void fm_init(void) { } +static inline void fm_fini(void) { } -extern int is_fm_panic(); #endif /* _KERNEL */ #ifdef __cplusplus diff --git a/module/zfs/include/sys/zfs_context.h b/module/zfs/include/sys/zfs_context.h index 558e9e188..af9275b19 100644 --- a/module/zfs/include/sys/zfs_context.h +++ b/module/zfs/include/sys/zfs_context.h @@ -58,14 +58,9 @@ extern "C" { #include <sys/zone.h> #include <sys/uio.h> #include <sys/zfs_debug.h> -#include <sys/sysevent.h> -#include <sys/sysevent/eventdefs.h> -#include <sys/sysevent/dev.h> -#include <sys/fm/util.h> +#include <sys/fm/fs/zfs.h> #include <sys/sunddi.h> -#define CPU_SEQID (CPU->cpu_seqid) - #ifdef __cplusplus } #endif diff --git a/module/zfs/include/sys/zfs_ioctl.h b/module/zfs/include/sys/zfs_ioctl.h index 84bf794fe..ad41561ad 100644 --- a/module/zfs/include/sys/zfs_ioctl.h +++ b/module/zfs/include/sys/zfs_ioctl.h @@ -236,6 +236,9 @@ typedef struct zinject_record { #define ZINJECT_FLUSH_ARC 0x2 #define ZINJECT_UNLOAD_SPA 0x4 +#define ZEVENT_NONBLOCK 0x1 +#define ZEVENT_SIZE 1024 + typedef struct zfs_share { uint64_t z_exportdata; uint64_t z_sharedata; |