From: Nix <nix@esperi.org.uk>
To: linux-hotplug@vger.kernel.org
Subject: udevadm settle persistently failing
Date: Sun, 15 May 2011 18:19:04 +0000 [thread overview]
Message-ID: <8739kfzv1j.fsf@spindle.srvr.nix> (raw)
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≠d --type=subsystems
udevadm trigger --action≠d --typefivices
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.
| (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.
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.)
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:
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.
Anyone know what's going on? I haven't bisected yet (the problem is
intermittent), but I strongly suspect that
commit ead7c62ab7641e150c6d668f939c102a6771ce60
Author: Kay Sievers <kay.sievers@vrfy.org>
Date: Wed Apr 20 02:18:22 2011 +0200
udevadm: settle - kill alarm()
commit 2181d30a342dd9fb168b7077ae5095849e328689
Author: Kay Sievers <kay.sievers@vrfy.org>
Date: Wed Apr 20 01:53:03 2011 +0200
timeout handling without alarm()
has broken udevadm settle and caused it to not wait at all. I'll
check that next time I reboot (with my heart in my mouth).
--
NULL && (void)
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next reply other threads:[~2011-05-15 18:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-15 18:19 Nix [this message]
2011-05-15 18:32 ` udevadm settle persistently failing Tom Gundersen
2011-05-15 23:25 ` Kay Sievers
2011-05-15 23:33 ` Kay Sievers
2011-05-15 23:38 ` Nix
2011-05-15 23:47 ` Nix
2011-05-15 23:51 ` Kay Sievers
2011-05-15 23:57 ` Kay Sievers
2011-05-16 5:05 ` DJ Lucas
2011-05-16 6:23 ` DJ Lucas
2011-05-16 10:01 ` Nix
2011-05-16 10:22 ` Marco d'Itri
2011-05-16 10:36 ` Nix
2011-05-16 10:51 ` Kay Sievers
2011-05-16 11:28 ` Kay Sievers
2011-05-16 12:47 ` Nix
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8739kfzv1j.fsf@spindle.srvr.nix \
--to=nix@esperi.org.uk \
--cc=linux-hotplug@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).