From 2958c8861471ba899ecbb5fcc1951d74746a9163 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 9 Feb 2011 14:48:52 +0100 Subject: [PATCH] device: consider udev devices with SYSTEMD_READY=0 as unplugged --- TODO | 13 +++---------- src/device.c | 6 ++++-- 2 files changed, 7 insertions(+), 12 deletions(-) diff --git a/TODO b/TODO index 4e9d4e1b..17203130 100644 --- a/TODO +++ b/TODO @@ -1,8 +1,5 @@ Bugs: -* somehow some /etc/fstab supplied mount params are never applied to api fs - https://bugzilla.redhat.com/show_bug.cgi?id=663108 - * isolate multi-user.target doesn't start a getty@tty1 if we run it from graphical.target * when plymouth is disabled the console password entry stuff seems to be borked @@ -10,24 +7,20 @@ Bugs: * fsck.btrfs non-existance should not cause mounting to fail -* need a way to apply mount options of api vfs from systemd unit files instead of fstab - Features: -* make it possible to enable status msgs via RT sigs +* need a way to apply mount options of api vfs from systemd unit files instead of fstab * udisks should not use udisks-part-id, instead use blkid. also not probe /dev/loopxxx -* snd-seq muss weg +* snd-seq should go, https://bugzilla.redhat.com/show_bug.cgi?id=676095 -* mount.tmpfs soll weg und grep weg +* mount.tmpfs should be optimized, https://bugzilla.redhat.com/show_bug.cgi?id=676100 * mdmon is irre * gnome-shell python script/glxinfo/is-accelerated wech -* plymouth muss sauber exiten, wenn's schon läuft - * pull in by udev change event instead of only start event * PID heuristik bei Type=forking ausmachbar machen diff --git a/src/device.c b/src/device.c index 5289da3e..b9d8a2b9 100644 --- a/src/device.c +++ b/src/device.c @@ -526,7 +526,7 @@ fail: void device_fd_event(Manager *m, int events) { struct udev_device *dev; int r; - const char *action; + const char *action, *ready; assert(m); @@ -552,7 +552,9 @@ void device_fd_event(Manager *m, int events) { goto fail; } - if (streq(action, "remove")) { + ready = udev_device_get_property_value(dev, "SYSTEMD_READY"); + + if (streq(action, "remove") || (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; -- 2.39.5