From 5f087dda784b26f16e72eff32c0e2c2b7c483adb Mon Sep 17 00:00:00 2001 From: Ryan Moeller Date: Tue, 18 Feb 2020 14:22:56 -0500 Subject: Enable zpool events tunables and tests on FreeBSD We have have made the necessary changes in our module code to expose zevents through both devd and the zpool events ioctl. Now the tunables can be exposed and zpool events tests can be enabled on both platforms. A few minor tweaks to the tests were needed to accommodate the way wc formats output on FreeBSD. zed remains to be ported. Reviewed-by: Brian Behlendorf Signed-off-by: Ryan Moeller Closes #10008 --- include/os/linux/kernel/linux/mod_compat.h | 1 + module/zfs/fm.c | 17 +++++++---------- tests/runfiles/common.run | 5 +++++ tests/runfiles/linux.run | 5 ----- tests/zfs-tests/include/tunables.cfg | 2 +- .../cli_root/zpool_events/zpool_events_clear.ksh | 6 +++--- .../cli_root/zpool_events/zpool_events_errors.ksh | 4 ++-- .../cli_root/zpool_events/zpool_events_follow.ksh | 4 ++-- 8 files changed, 21 insertions(+), 23 deletions(-) diff --git a/include/os/linux/kernel/linux/mod_compat.h b/include/os/linux/kernel/linux/mod_compat.h index 572093218..a0f618d14 100644 --- a/include/os/linux/kernel/linux/mod_compat.h +++ b/include/os/linux/kernel/linux/mod_compat.h @@ -70,6 +70,7 @@ enum scope_prefix_types { zfs_vdev, zfs_vdev_cache, zfs_vdev_mirror, + zfs_zevent, zfs_zio, zfs_zil, spa diff --git a/module/zfs/fm.c b/module/zfs/fm.c index e3c3a1700..c00e08b8d 100644 --- a/module/zfs/fm.c +++ b/module/zfs/fm.c @@ -1607,9 +1607,7 @@ fm_erpt_dropped_increment(void) { atomic_inc_64(&ratelimit_dropped); } -#endif -#ifdef _KERNEL void fm_init(void) { @@ -1664,14 +1662,13 @@ fm_fini(void) fm_ksp = NULL; } } +#endif /* _KERNEL */ -module_param(zfs_zevent_len_max, int, 0644); -MODULE_PARM_DESC(zfs_zevent_len_max, "Max event queue length"); - -module_param(zfs_zevent_cols, int, 0644); -MODULE_PARM_DESC(zfs_zevent_cols, "Max event column width"); +ZFS_MODULE_PARAM(zfs_zevent, zfs_zevent_, len_max, INT, ZMOD_RW, + "Max event queue length"); -module_param(zfs_zevent_console, int, 0644); -MODULE_PARM_DESC(zfs_zevent_console, "Log events to the console"); +ZFS_MODULE_PARAM(zfs_zevent, zfs_zevent_, cols, INT, ZMOD_RW, + "Max event column width"); -#endif /* _KERNEL */ +ZFS_MODULE_PARAM(zfs_zevent, zfs_zevent_, console, INT, ZMOD_RW, + "Log events to the console"); diff --git a/tests/runfiles/common.run b/tests/runfiles/common.run index 3c71458eb..cbd8ef93e 100644 --- a/tests/runfiles/common.run +++ b/tests/runfiles/common.run @@ -333,6 +333,11 @@ tags = ['functional', 'cli_root', 'zpool_destroy'] tests = ['zpool_detach_001_neg'] tags = ['functional', 'cli_root', 'zpool_detach'] +[tests/functional/cli_root/zpool_events] +tests = ['zpool_events_clear', 'zpool_events_cliargs', 'zpool_events_follow', + 'zpool_events_poolname', 'zpool_events_errors'] +tags = ['functional', 'cli_root', 'zpool_events'] + [tests/functional/cli_root/zpool_export] tests = ['zpool_export_001_pos', 'zpool_export_002_pos', 'zpool_export_003_neg', 'zpool_export_004_pos'] diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 7378f1aee..6d6fc0322 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -59,11 +59,6 @@ tags = ['functional', 'cli_root', 'zfs_sysfs'] tests = ['add_nested_replacing_spare'] tags = ['functional', 'cli_root', 'zpool_add'] -[tests/functional/cli_root/zpool_events:Linux] -tests = ['zpool_events_clear', 'zpool_events_cliargs', 'zpool_events_follow', - 'zpool_events_poolname', 'zpool_events_errors'] -tags = ['functional', 'cli_root', 'zpool_events'] - [tests/functional/cli_root/zpool_expand:Linux] tests = ['zpool_expand_001_pos', 'zpool_expand_002_pos', 'zpool_expand_003_neg', 'zpool_expand_004_pos', 'zpool_expand_005_pos'] diff --git a/tests/zfs-tests/include/tunables.cfg b/tests/zfs-tests/include/tunables.cfg index 2a4ea9bdc..01176c781 100644 --- a/tests/zfs-tests/include/tunables.cfg +++ b/tests/zfs-tests/include/tunables.cfg @@ -73,7 +73,7 @@ VDEV_VALIDATE_SKIP vdev.validate_skip vdev_validate_skip VOL_INHIBIT_DEV UNSUPPORTED zvol_inhibit_dev VOL_MODE vol.mode zvol_volmode VOL_RECURSIVE vol.recursive UNSUPPORTED -ZEVENT_LEN_MAX UNSUPPORTED zfs_zevent_len_max +ZEVENT_LEN_MAX zevent.len_max zfs_zevent_len_max ZIO_SLOW_IO_MS zio.slow_io_ms zio_slow_io_ms %%%% while read name FreeBSD Linux; do diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh index 67038a474..054d39be3 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_clear.ksh @@ -43,14 +43,14 @@ for i in `seq 1 $EVENTS_NUM`; do done # wait a bit to allow the kernel module to process new events zpool_events_settle -EVENTS_NUM="$(zpool events -H | wc -l)" +EVENTS_NUM=$(zpool events -H | wc -l | xargs) # 3. Verify 'zpool events -c' successfully clear new events -CLEAR_OUTPUT="$(zpool events -c)" +CLEAR_OUTPUT=$(zpool events -c) if [[ "$CLEAR_OUTPUT" != "cleared $EVENTS_NUM events" ]]; then log_fail "Failed to clear $EVENTS_NUM events: $CLEAR_OUTPUT" fi -EVENTS_NUM="$(zpool events -H | wc -l)" +EVENTS_NUM=$(zpool events -H | wc -l) if [[ $EVENTS_NUM -ne 0 ]]; then log_fail "Unexpected events number: $EVENTS_NUM != 0" fi diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh index ba940210e..4645e245c 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_errors.ksh @@ -129,11 +129,11 @@ function do_test fi fi - if [ "$val" == "0" ] || [ "$events" == "" ] ; then + if [ -z "$val" -o $val -eq 0 -o -z "$events" -o $events -eq 0 ] ; then log_fail "Didn't see any errors or events ($val/$events)" fi - if [ "$val" != "$events" ] ; then + if [ $val -ne $events ] ; then log_fail "$val $POOLTYPE $str errors != $events events" else log_note "$val $POOLTYPE $str errors == $events events" diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh index a996e57c1..258de033b 100755 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_follow.ksh @@ -56,8 +56,8 @@ done zpool_events_settle # 4. Verify 'zpool events -f' successfully recorded these new events -EVENTS_LOG="$(cat $EVENTS_FILE | wc -l)" -if [[ "$EVENTS_LOG" != "$EVENTS_NUM" ]]; then +EVENTS_LOG=$(cat $EVENTS_FILE | wc -l) +if [[ $EVENTS_LOG -ne $EVENTS_NUM ]]; then log_fail "Unexpected number of events: $EVENTS_LOG != $EVENTS_NUM" fi -- cgit v1.2.3