When an unit is called via udev rules like below, only first 'online'
works correctly. Even if 'offline' event has happen, device and its
relative data still exists inside systemd, then following online
events will be ignored since systemd thinks it's already done. The
device and its relatives should be removed when 'offline' event has
happened.
ACTION=="online|offline", TAG+="systemd",
ENV{SYSTEMD_WANTS}="muneda@$devpath_$env{ACTION}.service"
Tested with
kernel-3.10.10-200.fc19.x86_64
systemd-204-9.fc19.x86_64
And I confirmed that this patch can apply cleanly on git HEAD
(a012ab5).
Thanks,
Takahiro
---
src/core/device.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/core/device.c b/src/core/device.c
index 9fca82a..467c5ef 100644
--- a/src/core/device.c
+++ b/src/core/device.c
@@ -589,7 +589,7 @@ void device_fd_event(Manager *m, int events) {
ready = udev_device_get_property_value(dev, "SYSTEMD_READY");
- if (streq(action, "remove") || (ready && parse_boolean(ready) == 0)) {
+ if (streq(action, "remove") || streq(action, "offline") || (ready &&
parse_boolean(ready) == 0)) {
if ((r = device_process_removed_device(m, dev)) < 0) {
log_error("Failed to process udev device event: %s",
strerror(-r));
goto fail;
--
1.8.3.1
_______________________________________________
systemd-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/systemd-devel