From 1baeee5784f1b859d2a1446f6776efe6d7fde7b6 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Fri, 4 Mar 2022 21:45:24 +0900 Subject: [PATCH] udevadm trigger: introduce --type=all option --- man/udevadm.xml | 6 +++--- shell-completion/bash/udevadm | 2 +- shell-completion/zsh/_udevadm | 2 +- src/udev/udevadm-trigger.c | 8 ++++++++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/man/udevadm.xml b/man/udevadm.xml index 99599634e3..24ed4a29c7 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -280,9 +280,9 @@ - Trigger a specific type of devices. Valid types are: - devices, subsystems. - The default value is devices. + Trigger a specific type of devices. Valid types are all, + devices, and subsystems. The default value is + devices. diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm index b68a332500..4d52597cbf 100644 --- a/shell-completion/bash/udevadm +++ b/shell-completion/bash/udevadm @@ -118,7 +118,7 @@ _udevadm() { if __contains_word "$prev" ${OPTS[TRIGGER_ARG]}; then case $prev in -t|--type) - comps='devices subsystems' + comps='all devices subsystems' ;; -c|--action) comps=$( udevadm trigger --action help ) diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm index d9d995fb33..8a10237e3d 100644 --- a/shell-completion/zsh/_udevadm +++ b/shell-completion/zsh/_udevadm @@ -24,7 +24,7 @@ _udevadm_trigger(){ '--verbose[Print the list of devices which will be triggered.]' \ '--dry-run[Do not actually trigger the event.]' \ '--quiet[Suppress error logging in triggering events.]' \ - '--type=[Trigger a specific type of devices.]:types:(devices subsystems failed)' \ + '--type=[Trigger a specific type of devices.]:types:(all devices subsystems failed)' \ '--action=[Type of event to be triggered.]:actions:(add change remove move online offline bind unbind)' \ '--subsystem-match=[Trigger events for devices which belong to a matching subsystem.]' \ '--subsystem-nomatch=[Do not trigger events for devices which belong to a matching subsystem.]' \ diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c index 900e307c06..e4b3150e60 100644 --- a/src/udev/udevadm-trigger.c +++ b/src/udev/udevadm-trigger.c @@ -271,6 +271,7 @@ int trigger_main(int argc, char *argv[], void *userdata) { enum { TYPE_DEVICES, TYPE_SUBSYSTEMS, + TYPE_ALL, } device_type = TYPE_DEVICES; sd_device_action_t action = SD_DEVICE_CHANGE; _cleanup_(sd_device_enumerator_unrefp) sd_device_enumerator *e = NULL; @@ -313,6 +314,8 @@ int trigger_main(int argc, char *argv[], void *userdata) { device_type = TYPE_DEVICES; else if (streq(optarg, "subsystems")) device_type = TYPE_SUBSYSTEMS; + else if (streq(optarg, "all")) + device_type = TYPE_ALL; else return log_error_errno(SYNTHETIC_ERRNO(EINVAL), "Unknown type --type=%s", optarg); break; @@ -495,6 +498,11 @@ int trigger_main(int argc, char *argv[], void *userdata) { if (r < 0) return log_error_errno(r, "Failed to scan devices: %m"); break; + case TYPE_ALL: + r = device_enumerator_scan_devices_and_subsystems(e); + if (r < 0) + return log_error_errno(r, "Failed to scan devices and subsystems: %m"); + break; default: assert_not_reached(); } -- 2.25.1