core/device: ignore ID_PROCESSING udev property on enumerate
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 24 Nov 2024 04:19:27 +0000 (13:19 +0900)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 29 Nov 2024 13:26:56 +0000 (14:26 +0100)
This partially reverts the commit 405be62f05d76f1845f347737b5972158c79dd3e
"tree-wide: refuse enumerated device with ID_PROCESSING=1".

Otherwise, when systemd-udev-trigger.service is (re)started just before
daemon-reexec, which can be easily happen on systemd package update, then
udev database files for many devices may have ID_PROCESSING=1 property,
thus devices may not be enumerated on daemon-reexec. That causes many
units especially mount units being deactivated after daemon-reexec.

Fixes #35329.

(cherry picked from commit c4fc22c4defc5983e53f4ce048e15ea7d31e6a75)

src/core/device.c

index d8567676a75fa00fdd0e59a6f45336762adabf95..93cab92b8ce0669e8c4e20301e86a1e49f3617d3 100644 (file)
@@ -1051,9 +1051,6 @@ static void device_enumerate(Manager *m) {
                 _cleanup_set_free_ Set *ready_units = NULL, *not_ready_units = NULL;
                 Device *d;
 
-                if (device_is_processed(dev) <= 0)
-                        continue;
-
                 if (device_setup_units(m, dev, &ready_units, &not_ready_units) < 0)
                         continue;