From 3a36568581e5eec9157138c78d5398fa735dd6b9 Mon Sep 17 00:00:00 2001 From: Kairui Song Date: Thu, 22 Nov 2018 22:56:08 +0800 Subject: [PATCH] Make udev reload rules quiet during bootup In commit 1c97aee and commit 227c185 udev rules was rewritten to use systemd-run to run in a non-blocking mode. The problem is that it's a bit noise, especially on machine bootup, systemd will always generate extra logs for service start, you might see your journal full of lines like these if you have many CPUs (each CPU generates a udev event on boot): ... Nov 22 22:23:05 localhost systemd[1]: Started /usr/lib/udev/kdump-udev-throttler. Nov 22 22:23:05 localhost systemd[1]: Started /usr/lib/udev/kdump-udev-throttler. Nov 22 22:23:05 localhost systemd[1]: Started /usr/lib/udev/kdump-udev-throttler. Nov 22 22:23:05 localhost systemd[1]: Started /usr/lib/udev/kdump-udev-throttler. ... While system is still booting up, kdump service is not started yet, so systemd-run calls will end up doing nothing, the throttler being called by systemd-run will just exit if kdump is not loaded. This patch avoid systemd-run from being called at first place if kdump service is not running by checking kdump.service status in udev rule, so there won't be unnecessary logs. Also remove the kdump service checking logic in kdump-udev-throttler as udev is the only expected callee of this script, if it's not being called at first place when kdump service is running, this checking will be redundant. And even if any user called this script manually, it will still work well as this script will call 'kdumpctl reload', it reload the kdump resource only if kdump is loaded already. Signed-off-by: Kairui Song Acked-by: Dave Young --- 98-kexec.rules | 6 +++++- kdump-udev-throttler | 5 ----- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/98-kexec.rules b/98-kexec.rules index 2f88c77..b73b701 100644 --- a/98-kexec.rules +++ b/98-kexec.rules @@ -7,6 +7,10 @@ GOTO="kdump_reload_end" LABEL="kdump_reload" -RUN+="/usr/bin/systemd-run --no-block /usr/lib/udev/kdump-udev-throttler" +# If kdump is not loaded, calling kdump-udev-throttle will end up +# doing nothing, but systemd-run will always generate extra logs for +# each call, so trigger the kdump-udev-throttler only if kdump +# service is active to avoid unnecessary logs +RUN+="/bin/sh -c '/usr/bin/systemctl is-active kdump.service || exit 0; /usr/bin/systemd-run --quiet --no-block /usr/lib/udev/kdump-udev-throttler'" LABEL="kdump_reload_end" diff --git a/kdump-udev-throttler b/kdump-udev-throttler index 6cbb99a..cd77a31 100755 --- a/kdump-udev-throttler +++ b/kdump-udev-throttler @@ -13,12 +13,7 @@ # In this way, we can make sure kdump service is restarted immediately # and for exactly once after udev events are settled. - throttle_lock="/var/lock/kdump-udev-throttle" -interval=2 - -# Don't reload kdump service if kdump service is not started by systemd -systemctl is-active kdump.service &>/dev/null || exit 0 exec 9>$throttle_lock if [ $? -ne 0 ]; then