Previously, we'd just wait for the first moment where the kernel exposes the same numbre of partitions as libblkid tells us. After that point we enumerate kernel partitions and look for matching libblkid partitions. With this change we'll instead enumerate with libblkid only, and then wait for each kernel partition to show up with the exact parameters we expect them to show up. Once that happens we are happy. Care is taken to use the udev device notification messages only as hint to recheck what the kernel actually says. That's because we are otherwise subject to a race: we might see udev events from an earlier use of a loopback device. After all these devices are heavily recycled. Under the assumption that we'll get udev events for *at least* all partitions we care about (but possibly more) we can fix the race entirely with one more fix coming in a later commit: if we make sure that a loopback block device has zero kernel partitions when we take possession of it, it doesn't matter anymore if we get spurious udev events from a previous use. All we have to do is notice when the devices we need all popped up.
System and Service Manager
Details
Most documentation is available on systemd's web site.
Assorted, older, general information about systemd can be found in the systemd Wiki.
Information about build requirements is provided in the README file.
Consult our NEWS file for information about what's new in the most recent systemd versions.
Please see the Hacking guide for information on how to hack on systemd and test your modifications.
Please see our Contribution Guidelines for more information about filing GitHub Issues and posting GitHub Pull Requests.
When preparing patches for systemd, please follow our Coding Style Guidelines.
If you are looking for support, please contact our mailing list or join our IRC channel.
Stable branches with backported patches are available in the stable repo.
