Comment 36: Here we have a big problem. The race appears in the time of devices enumeration. libblkid can be called even before the RAID is enumerated, i. e. in time when no other device than the one member of RAID exists. I am not sure, whether udev itself has something like "transactions", i. e. set of device actions that are logically grouped, but libblkid definitely does not have such concept. libblkid does exactly what the name indicates: identifies contents of the block devices. If a RAID signature is present on the disk, then it is reported as USAGE=raid. Current kernel+udev implementation continues in the enumeration of partitions, even if disk usage==raid. It causes the reported race. If we change this behavior, then disks taken from a RAID 1 array and connected separately may not boot automatically, and partitions will not be mounted automatically. I can also imagine a half-way implementation: Currently, USAGE tag supports following values: filesystem, raid, crypto, other. If we introduce a new value, it will break existing software. But I can imagine, that a RAID member partition will still return USAGE=filesystem, but additionaly it will return HINT=raid. Upper level sofware would need to process the hint and change its behavior. For example: udev can ignore USAGE=filesystem with HINT=raid, but if no boot device is found, try again ignoring HINT=raid.