[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

handling of udev settle timeout in anaconda

Hi all,

Currently we specify a timeout for udev_settle in various places inside
anaconda, however in all these places the timeout is lower then the
default timeout.

This does not seem wise, and I think this is based on a misunderstanding
of what the udevadm settle timeout parameter does.

The way it is currently used it seems (to me) that the callers expect
the timeout to cause udevadm to wait for at least timeout seconds for at
least 1 event to show up (and then to exit as soon as all events are

This is not how the timeout parameter works, the timeout parameter
causes udevadm settle to exit after timeout seconds, even if udev is
still handling events!

Since we are very dependent upon the udev database we really should
always wait for udev to be done scanning (and thus blkid, lvm, etc
having gathered all info we need).

We certainly should not wait only 10 seconds for this as we currently
do in some places.

So I would like to propose 2 changes:

1) centralize the setting of the timeout parameter inside the
udev_settle function. I do realize that the time needed for
initially scanning all disks is much larger, then the time for
scanning a single new partition when we are creating partitions.
But since this is a timeout, and udevadm settle will exit as soon
as the scanning is done, I see no reason not to have a single place
to configure the timeout assuming the worst case scenario (the initial
disk scan). This way we won't have these magic values sprinkled all
over the code.

2) Given that in the past we've had bugs filed
about anaconda taking many minutes to scan hardware on big iron machine
and that our initial udev settle call will scan all disks, I think
that udevadm's default timeout of 1 minutes is too low, I would like
to suggest using a timeout of 5 minutes.




Also see:

Which is caused by this (confirmed with an updates.img implementing
the above suggested changes).

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]