]> git.proxmox.com Git - mirror_zfs.git/commitdiff
Additional Information for Zedlets
authorN Clark <Nathaniel.Clark@misrule.us>
Mon, 3 Apr 2017 21:23:02 +0000 (17:23 -0400)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Mon, 3 Apr 2017 21:23:02 +0000 (14:23 -0700)
* Add ZPOOL pool state to zfs_post_common to
  allow differentiation between export and destroy
  by zedlets.

* Add pool name as standard export  This ensures
  pool name is exported to zedlets.

Reviewed-by: Tony Hutter <hutter2@llnl.gov>
Reviewed-by: Don Brady <don.brady@intel.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Nathaniel Clark <nathaniel.l.clark@intel.com>
Closes #5942

cmd/zed/zed_event.c
include/sys/fm/fs/zfs.h
module/zfs/zfs_fm.c

index b289ebf22dcd6d0bc70756c672d8156342fdd9ca..aecdb5146bc8265ccbfcdf8d71fa43a954f30c5b 100644 (file)
@@ -653,6 +653,16 @@ _zed_event_add_nvpair(uint64_t eid, zed_strings_t *zsp, nvpair_t *nvp)
                        (void) snprintf(alt, sizeof (alt), "%s_str", name);
                        _zed_event_add_var(eid, zsp, prefix, alt, "%s",
                            zpool_state_to_name(i64, VDEV_AUX_NONE));
+               } else
+               /*
+                * shadow readable strings for pool state
+                */
+               if (strcmp(name, FM_EREPORT_PAYLOAD_ZFS_POOL_STATE) == 0) {
+                       char alt[32];
+
+                       (void) snprintf(alt, sizeof (alt), "%s_str", name);
+                       _zed_event_add_var(eid, zsp, prefix, alt, "%s",
+                           zpool_pool_state_to_name(i32));
                }
                break;
        case DATA_TYPE_DOUBLE:
index 7a8c36ea274ebc86020f18b78fe68183282650f0..6bef8b4eedddb51a2c086e55dd99a3af05fe8254 100644 (file)
@@ -54,6 +54,7 @@ extern "C" {
 #define        FM_EREPORT_PAYLOAD_ZFS_POOL_FAILMODE    "pool_failmode"
 #define        FM_EREPORT_PAYLOAD_ZFS_POOL_GUID        "pool_guid"
 #define        FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT     "pool_context"
+#define        FM_EREPORT_PAYLOAD_ZFS_POOL_STATE       "pool_state"
 #define        FM_EREPORT_PAYLOAD_ZFS_VDEV_GUID        "vdev_guid"
 #define        FM_EREPORT_PAYLOAD_ZFS_VDEV_TYPE        "vdev_type"
 #define        FM_EREPORT_PAYLOAD_ZFS_VDEV_PATH        "vdev_path"
index 684e93d8e9b7006e45a20d0b0e5e99fef6181999..2451bfbc000ef9d94e84ce3546b306583155e0bc 100644 (file)
@@ -266,9 +266,10 @@ zfs_ereport_start(nvlist_t **ereport_out, nvlist_t **detector_out,
        /*
         * Generic payload members common to all ereports.
         */
-       fm_payload_set(ereport, FM_EREPORT_PAYLOAD_ZFS_POOL,
-           DATA_TYPE_STRING, spa_name(spa), FM_EREPORT_PAYLOAD_ZFS_POOL_GUID,
-           DATA_TYPE_UINT64, spa_guid(spa),
+       fm_payload_set(ereport,
+           FM_EREPORT_PAYLOAD_ZFS_POOL, DATA_TYPE_STRING, spa_name(spa),
+           FM_EREPORT_PAYLOAD_ZFS_POOL_GUID, DATA_TYPE_UINT64, spa_guid(spa),
+           FM_EREPORT_PAYLOAD_ZFS_POOL_STATE, DATA_TYPE_UINT64, spa_state(spa),
            FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT, DATA_TYPE_INT32,
            spa_load_state(spa), NULL);
 
@@ -920,8 +921,12 @@ zfs_post_common(spa_t *spa, vdev_t *vd, const char *type, const char *name,
            ZFS_ERROR_CLASS, name);
        VERIFY0(nvlist_add_uint8(resource, FM_VERSION, FM_RSRC_VERSION));
        VERIFY0(nvlist_add_string(resource, FM_CLASS, class));
+       VERIFY0(nvlist_add_string(resource,
+           FM_EREPORT_PAYLOAD_ZFS_POOL, spa_name(spa)));
        VERIFY0(nvlist_add_uint64(resource,
            FM_EREPORT_PAYLOAD_ZFS_POOL_GUID, spa_guid(spa)));
+       VERIFY0(nvlist_add_uint64(resource,
+           FM_EREPORT_PAYLOAD_ZFS_POOL_STATE, spa_state(spa)));
        VERIFY0(nvlist_add_int32(resource,
            FM_EREPORT_PAYLOAD_ZFS_POOL_CONTEXT, spa_load_state(spa)));