Hi all,

when I have an udev rule with an ENV{SYSTEMD_WANTS}+="my.service", and 
another.service with After=systemd-udevd.service, can I at system boot rely on 
my.service to be already run when another.service starts?

Here's the background to the question:

I'm developing an embedded device with autoupdate functionality. It grabs the 
new disk image from an usb drive when plugged in. The udev rule and the systemd 
units + shell scripts run all fine. The only thing complicating all this is 
that at boot into the new system, the udev rule fires as well.

I worked around this in the following way:
* udev-triggered start-update.service runs only if 
/persistent/update-running.stamp doesn't yet exist. When started, it creates 
this file.
* autoscheduled conclude-update.service contains After=systemd-udevd.service 
and removes /persistent/update-running.stamp.

I assumed this would at system boot ensure the start-update.service to be 
started before conclude-update.service, hence not doing anything. Until 
recently, this seemed to worked fine, but I have received reports making me 
believe I was just witnessing a race condition resulting in my favor.


Best regards,
Manuel
_______________________________________________
systemd-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to