From f21de6883fa53b83c065aaa1aca7122afafb3c90 Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" Date: Wed, 24 Jun 2020 19:57:13 -0400 Subject: [PATCH] Add trim_finish notify script for ZED Allow users to configure notifications when TRIM operations are completed on pools. Unlike resilver_finish and scrub_finish, the trim_finish event is generated for each vdev in the pool which was trimmed, so the script will generate a notification for each one. Reviewed-by: Brian Behlendorf Signed-off-by: Kevin P. Fleming Closes #10491 --- cmd/zed/zed.d/Makefile.am | 3 ++- cmd/zed/zed.d/trim_finish-notify.sh | 37 +++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100755 cmd/zed/zed.d/trim_finish-notify.sh diff --git a/cmd/zed/zed.d/Makefile.am b/cmd/zed/zed.d/Makefile.am index fbfd562c2e..5cf51e4fdf 100644 --- a/cmd/zed/zed.d/Makefile.am +++ b/cmd/zed/zed.d/Makefile.am @@ -24,7 +24,8 @@ dist_zedexec_SCRIPTS = \ vdev_clear-led.sh \ vdev_attach-led.sh \ pool_import-led.sh \ - resilver_finish-start-scrub.sh + resilver_finish-start-scrub.sh \ + trim_finish-notify.sh nodist_zedexec_SCRIPTS = history_event-zfs-list-cacher.sh diff --git a/cmd/zed/zed.d/trim_finish-notify.sh b/cmd/zed/zed.d/trim_finish-notify.sh new file mode 100755 index 0000000000..5075302997 --- /dev/null +++ b/cmd/zed/zed.d/trim_finish-notify.sh @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Send notification in response to a TRIM_FINISH. The event +# will be received for each vdev in the pool which was trimmed. +# +# Exit codes: +# 0: notification sent +# 1: notification failed +# 2: notification not configured +# 9: internal error + +[ -f "${ZED_ZEDLET_DIR}/zed.rc" ] && . "${ZED_ZEDLET_DIR}/zed.rc" +. "${ZED_ZEDLET_DIR}/zed-functions.sh" + +[ -n "${ZEVENT_POOL}" ] || exit 9 +[ -n "${ZEVENT_SUBCLASS}" ] || exit 9 + +zed_check_cmd "${ZPOOL}" || exit 9 + +umask 077 +note_subject="ZFS ${ZEVENT_SUBCLASS} event for ${ZEVENT_POOL} on $(hostname)" +note_pathname="${TMPDIR:="/tmp"}/$(basename -- "$0").${ZEVENT_EID}.$$" +{ + echo "ZFS has finished a trim:" + echo + echo " eid: ${ZEVENT_EID}" + echo " class: ${ZEVENT_SUBCLASS}" + echo " host: $(hostname)" + echo " time: ${ZEVENT_TIME_STRING}" + + "${ZPOOL}" status -t "${ZEVENT_POOL}" + +} > "${note_pathname}" + +zed_notify "${note_subject}" "${note_pathname}"; rv=$? +rm -f "${note_pathname}" +exit "${rv}"