From 47ca2929fce9156d8dcbc94e46a03d9467f34fc9 Mon Sep 17 00:00:00 2001 From: Jorgen Lundman Date: Wed, 20 May 2020 20:08:58 +0900 Subject: [PATCH] Upstream: Add snapshot events For kernel to send snapshot mount/unmount events to zed. Signed-off-by: Jorgen Lundman --- include/sys/fm/fs/zfs.h | 2 ++ module/zfs/zfs_fm.c | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/include/sys/fm/fs/zfs.h b/include/sys/fm/fs/zfs.h index 6491606d328b..9594195da087 100644 --- a/include/sys/fm/fs/zfs.h +++ b/include/sys/fm/fs/zfs.h @@ -55,6 +55,8 @@ extern "C" { #define FM_EREPORT_ZFS_PROBE_FAILURE "probe_failure" #define FM_EREPORT_ZFS_LOG_REPLAY "log_replay" #define FM_EREPORT_ZFS_CONFIG_CACHE_WRITE "config_cache_write" +#define FM_EREPORT_ZFS_SNAPSHOT_MOUNT "snapshot_mount" +#define FM_EREPORT_ZFS_SNAPSHOT_UNMOUNT "snapshot_unmount" #define FM_EREPORT_PAYLOAD_ZFS_POOL "pool" #define FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE "pool_failmode" diff --git a/module/zfs/zfs_fm.c b/module/zfs/zfs_fm.c index 60e631567a89..242ac564099d 100644 --- a/module/zfs/zfs_fm.c +++ b/module/zfs/zfs_fm.c @@ -1443,7 +1443,29 @@ zfs_ereport_fini(void) list_destroy(&recent_events_list); mutex_destroy(&recent_events_lock); } +#endif + +void +zfs_ereport_snapshot_post(const char *subclass, spa_t *spa, const char *name) +{ +#ifdef _KERNEL + nvlist_t *ereport = NULL; + nvlist_t *detector = NULL; + + zfs_ereport_start(&ereport, &detector, + subclass, + spa, NULL, NULL, NULL, 0, 0); + + if (ereport == NULL) return; + + VERIFY0(nvlist_add_string(ereport, "snapshot_name", name)); + + /* Cleanup is handled by the callback function */ + zfs_zevent_post(ereport, detector, zfs_zevent_post_cb); +#endif +} +#if defined(_KERNEL) EXPORT_SYMBOL(zfs_ereport_post); EXPORT_SYMBOL(zfs_ereport_is_valid); EXPORT_SYMBOL(zfs_ereport_post_checksum);