units: remove udev control socket when systemd stops the socket unit (#4039)
authorMichal Sekletar <msekletar@users.noreply.github.com>
Thu, 25 Aug 2016 22:07:58 +0000 (00:07 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 25 Aug 2016 22:07:58 +0000 (00:07 +0200)
commit51bce29f8eee1cdc0eb25c8fe87e69e24b5fbd98
treed02a66576f45b5faa753e66aa08c9312a2f4cf99
parent929eeb5498e8ae87e05ae683c6d3014d4b59056d
units: remove udev control socket when systemd stops the socket unit (#4039)

Mere presence of the socket in the filesystem makes
udev_queue_get_udev_is_active() return that udev is running. Note that,
udev on exit doesn't unlink control socket nor does systemd. Thus socket
stays around even when both daemon and socket are stopped. This causes
problems for cryptsetup because when it detects running udev it launches
synchronous operations that *really* require udev. This in turn may
cause blocking and subsequent timeout in systemd-cryptsetup on reboot
while machine is in a state that udev and its control socket units are
stopped, e.g. emergency mode.

Fixes #2477
units/systemd-udevd-control.socket