Re: udevadm settle persistently failing

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

 



On Sun, May 15, 2011 at 20:19, Nix <nix@xxxxxxxxxxxxx> wrote:
> I know that you're not supposed to rely on 'udevadm settle' anymore, but
> I rely on it across the board for systems with root filesystems that
> aren't expected to move around (i.e. all of them), because massively
> reengineering working systems' boot processes is generally considered a
> bad thing. And it's stopped working. Given how many things expect /dev
> to be populated, this has fairly serious effects.
>
> I can be certain that as of somewhere between udev 164 and 167, 'udevadm
> settle' has stopped waiting for block devices to appear (though I
> suspect others have vanished too). I'm booting udev as recommended in
> the release notes, via
>
> Âudevd --daemon
> Âudevadm trigger --action=add --type=subsystems
> Âudevadm trigger --action=add --type=devices
> Âudevadm settle
>
> but this is what I now see:
>
> ,----
> | Creating initial device nodes...
> | [ Â Â2.035253] <30>udevd[297]: starting version 168
> | udevd[297]: specified group 'audio' unknown
> |
> | [ Â Â2.151279] <30>udevd[297]: converting old udev database
> | udevd[316]: failed to execute '/sbin/modprobe' '/sbin/modprobe -bv pci:v00001022d00002080sv00001022sd00002080bc06sc00i00': No such file or directory
> |
> | umount: /run: device is busy.

What's 'umount /run' during bootup? That sounds really strange.

> | Â Â Â Â (In some cases useful info about processes that use
> | Â Â Â Â Âthe device is found by lsof(8) or fuser(1))
> | Cannot find device "gordianet"
> | fsck from util-linux 2.19
> | udevd[334]: failed to exec[ Â Â2.457619] EXT2-fs (sda1): warning: mounting unchecked fs, running e2fsck is recommended
> | ute '/sbin/modprobe' '/sbin/modprobe -bv platform:cs5535-gpio': No such file or directory
> |
> | udevd[333]: failed to execute '/sbin/modprobe' '/sbin/modprobe -bv platform:cs5535-acpi': No such file or directory
> |
> | udevd[335]: failed to execute '/sbin/modprobe' '/sbin/modprobe -bv platform:cs5535-pms': No such file or directory
> |
> | udevd[336]: failed to execute '/sbin/modprobe' '/sbin/modprobe -bv sg': No such file or directory
> |
> | udevd[339]: failed to execute '/sbin/modprobe' '/sbin/modprobe -bv platform:rtc_cmos': No such file or directory
> |
> | fsck.ext2: No such file or directory while trying to open /dev/sda1
> | Possibly non-existent device?
> `----
>
> I have no clue why udev is trying to run modprobe when this is a
> non-modular kernel with all necessary devices built in. But that's not
> important.

Udev has no idea what the kernel supports, it calls modprobe for all
devices with a 'modalias' but no attached driver.

> By the time of that 'umount', 'udevadm settle' has returned. Shortly
> afterwards you see fsck claiming that devices don't exist. Look at
> it the filesystem after the resulting failed half-boot and you see:
>
> fold:~# ls -l /dev/sda1
> brw-rw---- 1 root disk 8, 1 May 15 18:56 /dev/sda1
>
> it's there. udevadm settle just didn't bother to wait for it to appear.
> (This is not a device on a bus for which enumeration takes some time:
> it's an SD card on an IDE-lookalike cs5535 bus. I've also seen this
> on LVM-atop-RAID-atop-SATA and on ordinary LVM-atop-SATA, so it doesn't
> require anything particularly unusual.)

Sounds weird. Settle should not return at that point. You are not
altering the content of /run/udev/ or /dev/.udev/ in any way right?
And you provide the /run tmpfs before you start udevd and don't touch
it again, right?

> Other things seem to have failed too. I have renaming rules:
>
> SUBSYSTEM=="net", ATTR{address}=="00:00:24:cb:c6:a0", NAME="gordianet"
> SUBSYSTEM=="net", ATTR{address}=="00:00:24:cb:c6:a1", NAME="adsl"
> SUBSYSTEM=="net", ATTR{address}=="00:00:24:cb:c6:a3", NAME="wireless"
>
> yet the devices were not renamed:

Hmm, that should be unrelated to the possible settle problem

> 2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
> Â Âlink/ether 00:00:24:cb:c6:a0 brd ff:ff:ff:ff:ff:ff
> 3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
> Â Âlink/ether 00:00:24:cb:c6:a1 brd ff:ff:ff:ff:ff:ff
> 5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
> Â Âlink/ether 00:00:24:cb:c6:a3 brd ff:ff:ff:ff:ff:ff
>
> Put a 'sleep 1' after the udev call, and everything works.

Which call? The trigger?

Kay
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel]     [Linux DVB]     [Asterisk Internet PBX]     [DCCP]     [Netdev]     [X.org]     [Util Linux NG]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux