From 9a39e1ce314d1a6f8a754f6dab040019239666a9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 4 Sep 2017 15:59:17 +0200 Subject: [PATCH] Add handling for bind/unbind actions (#6720) Newer kernels will emit uevents with "bind" and "unbind" actions. These uevents will be issued when driver is bound to or unbound from a device. "Bind" events are helpful when device requires a firmware to operate properly, and driver is unable to create a child device before firmware is properly loaded. For some reason systemd validates actions and drops the ones it does not know, instead of passing them on through as old udev did, so we need to explicitly teach it about them. --- src/libsystemd/sd-device/device-internal.h | 2 ++ src/libsystemd/sd-device/device-private.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/libsystemd/sd-device/device-internal.h b/src/libsystemd/sd-device/device-internal.h index f4783deef8d..0505a27304b 100644 --- a/src/libsystemd/sd-device/device-internal.h +++ b/src/libsystemd/sd-device/device-internal.h @@ -104,6 +104,8 @@ typedef enum DeviceAction { DEVICE_ACTION_MOVE, DEVICE_ACTION_ONLINE, DEVICE_ACTION_OFFLINE, + DEVICE_ACTION_BIND, + DEVICE_ACTION_UNBIND, _DEVICE_ACTION_MAX, _DEVICE_ACTION_INVALID = -1, } DeviceAction; diff --git a/src/libsystemd/sd-device/device-private.c b/src/libsystemd/sd-device/device-private.c index b4cd676c12a..8839c3266c1 100644 --- a/src/libsystemd/sd-device/device-private.c +++ b/src/libsystemd/sd-device/device-private.c @@ -466,6 +466,8 @@ static const char* const device_action_table[_DEVICE_ACTION_MAX] = { [DEVICE_ACTION_MOVE] = "move", [DEVICE_ACTION_ONLINE] = "online", [DEVICE_ACTION_OFFLINE] = "offline", + [DEVICE_ACTION_BIND] = "bind", + [DEVICE_ACTION_UNBIND] = "unbind", }; DEFINE_STRING_TABLE_LOOKUP(device_action, DeviceAction); -- 2.47.3