chiark / gitweb /
core: don't change removed devices to state "tentative"
authorMartin Pitt <martin.pitt@ubuntu.com>
Fri, 13 Mar 2015 07:35:59 +0000 (08:35 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Mon, 16 Mar 2015 13:21:57 +0000 (09:21 -0400)
Commit 628c89c introduced the "tentative" device state, which caused
devices to go from "plugged" to "tentative" on a remove uevent. This
breaks the cleanup of stale mounts (see commit 3b48ce4), as that only
applies to "dead" devices.

The "tentative" state only really makes sense on adding a device when
we don't know where it was coming from (i. e. not from udev). But when
we get a device removal from udev we definitively know that it's gone,
so change the device state back to "dead" as before 628c89c.

src/core/device.c

index 4bfd71f479d10d8a14099ffa08bb46668b4f7c4e..b5d9d827e2ea11d9c792d4fa98d2cced95a9dd78 100644 (file)
@@ -419,7 +419,7 @@ static void device_update_found_one(Device *d, bool add, DeviceFound found, bool
         if (now) {
                 if (d->found & DEVICE_FOUND_UDEV)
                         device_set_state(d, DEVICE_PLUGGED);
         if (now) {
                 if (d->found & DEVICE_FOUND_UDEV)
                         device_set_state(d, DEVICE_PLUGGED);
-                else if (d->found != DEVICE_NOT_FOUND)
+                else if (add && d->found != DEVICE_NOT_FOUND)
                         device_set_state(d, DEVICE_TENTATIVE);
                 else
                         device_set_state(d, DEVICE_DEAD);
                         device_set_state(d, DEVICE_TENTATIVE);
                 else
                         device_set_state(d, DEVICE_DEAD);