Bug#908796: udev (with sysvinit) fails to find devices at boot

Michael Biebl biebl at debian.org
Sun Oct 7 00:06:19 BST 2018


Am 05.10.18 um 10:25 schrieb Trek:
> On Thu, 4 Oct 2018 21:58:38 +0200
> Michael Biebl <biebl at debian.org> wrote:
> 
>>> 1) revert the 791944 patch, create a new init.d/udev-clear script to
>>> remove the control file and run it just after sendsigs (this will
>>> restore the old well tested behavior) 
>>
>> The removal of the control file should be bound to the live time of
>> the udev service, so splitting it off into a separate init script is
>> not a good idea.
> 
> yes, to be sure, we should call udev-clear before sendsigs
> 
> this will mimic the old behavior, where the control file doesn't exists
> after sendsigs
> 
> I think this is the first step we should do to restore the
> functionality, then we have more time to find the proper solution, but
> at least we will not miss another stable release without a functioning
> udev + sysvinit + dmsetup/cryptdisks

Tbh, I'm not interested in a quick hack, which we later have to clean up
again and is likely to break in other slightly odd ways.
And a new, separate init script feels like this.

>> A proper solution might (emphasis on might, as I haven't checked this)
>> be to teach start-stop-daemon about daemons using the sd-notify
>> interface. This is a more elaborate fix, for sure, but everything else
>> feels like an incomplete hack.
> 
> yes, probably this is a good solution
> 
> as start-stop-daemon is called in parallel, it could be required to
> create a different notify socket per instance, but luckily the client
> library manage the NOTIFY_SOCKET environment variable

Would you be willing to talk to the dpkg/start-stop-daemon maintainer to
gather his input on this matter?
Someone else willing/interested in doing this?

> another possible solution is to add an option to udev to remove the
> control file on exit, as it was in the past

Changing systemd-udevd to unlink the control file itself would work.
This would require someone to talk to upstream though and convince them
to make this change. We've been tirelessly working on reducing the
amount of downstream patches and I don't want to add a downstream patch
which we'd never get rid off again.

So, aside from these two options (providing sd-notify support in s-s-d,
unlinking the control in systemd-udevd directly), what you said above
got me thinking:

We change the init script as follows:
- We revert most the changes from #791944, we only keep the stop
symlinks for rc0 and rc6 and the cleanup of /run/udev/control file on stop.
- We tweak the LSB headers to make sure the udev init script is called
before sendsigs on shutdown. This is important!

This should ensure that udevd is properly killed and the control file
removed, i.e. there should be (almost) no time window where the udevd
daemon is not running but the control file exists.

On the other hand, this would mean we again stop udevd earlier during
shutdown, but we mostly had this behaviour already in previous releases
where udevd is killed by sendsigs.

I hope the idea is clear, if not, please don't hesitate to ask.


Trek, would you be willing to work on an patch for this?


-- 
Why is it that all of the instruments seeking intelligent life in the
universe are pointed away from Earth?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://alioth-lists.debian.net/pipermail/pkg-systemd-maintainers/attachments/20181007/510a7143/attachment-0002.sig>


More information about the Pkg-systemd-maintainers mailing list