Skip to content

Pausing udev makes /dev/disk/by-* unusable for installations #105

Open
@jrha

Description

@jrha

The change introduced back in 55401db pauses udev until partition metadata is wiped, but crucially this does not happen until the partition exists (i.e. test -e PARTITION passes).

On hosts with complex storage topologies the udev managed symlinks under /dev/disk/by-path are commonly used to identify the installation device.

For example, installing to the disk /dev/disk/by-path/pci-0000:c3:00.0-ata-1 will hang forever waiting for the first partition /dev/disk/by-path/pci-0000:c3:00.0-ata-1-part1 to exist as the generated code in the kickstart file does the following:

udevadm control --stop-exec-queue
parted /dev/disk/by-path/pci-0000:c3:00.0-ata-1 -s -- u s mkpart primary $begin $end
while true; do
    sleep 1
    udevadm settle --timeout=5
    test -e /dev/disk/by-path/pci-0000:c3:00.0-ata-1-part1 && break
done
wipe_metadata /dev/disk/by-path/pci-0000:c3:00.0-ata-1-part1
udevadm control --start-exec-queue
udevadm settle

Side note: I'm not sure if calling udevadm settle while the queue is stopped is even meaningful.

It's not clear to me how to handle this without breaking the original use-case here, as starting the queue earlier will cause the same LVM related issues as originally described.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions