[OE-core] [PATCH 1/1] init-live.sh: fix automount failed occasionally

Hongxu Jia hongxu.jia at windriver.com
Tue Jun 18 12:14:14 UTC 2013


Reboot system repeatedly, occasionally found usb automount failed, a
low probability but it happens.
$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
none                   1024972         4   1024968   0% /dev
/dev/sda3              7689384   3540940   3757840  49% /media/sda3
/dev/sda2            146127424   1238432 137466120   1% /media/sda2
/dev/sda1                17845     14570      2354  86% /media/sda1
/dev/sdb                293400    288560      4840  98% /media/sdb
/dev/sdc4               457632        32    457600   0% /media/sdc4
/dev/sdc1               475018      2321    447749   1% /media/sdc1
/dev/sdd               1382298   1382298         0 100% /media/sdd
/dev/sdc2               475694      2320    448374   1% /media/sdc2
/dev/loop0              270649    181249     75644  71% /
df: /media/sdc3: No such file or directory
tmpfs                  1029352         0   1029352   0% /dev/shm
tmpfs                  1029352      2816   1026536   0% /run
tmpfs                  1029352         0   1029352   0% /sys/fs/cgroup
tmpfs                  1029352         4   1029348   0% /tmp
tmpfs                  1029352         0   1029352   0% /media/ram
tmpfs                  1029352       116   1029236   0% /var/volatile

When boot media has been found, udev will be killed. If udev is busy
to mount other medias at the killing time (especially medias is many),
the above issue will occur occasionally.

Invoke `udevadm settle' before killing udev will resolve this
issue, it watches the udev event queue, and exits if all current
events are handled.

Use variable `_UDEV_DAEMON' to replace hardcoded `udevd' to keep
consistent with previous.

[YOCTO #4745]

Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
---
 meta/recipes-core/initrdscripts/files/init-live.sh | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh
index 804e16e..82042bf 100644
--- a/meta/recipes-core/initrdscripts/files/init-live.sh
+++ b/meta/recipes-core/initrdscripts/files/init-live.sh
@@ -75,7 +75,9 @@ read_args() {
 }
 
 boot_live_root() {
-    killall udevd 2>/dev/null
+    # Watches the udev event queue, and exits if all current events are handled
+    udevadm settle --timeout=3 --quiet
+    killall "${_UDEV_DAEMON##*/}" 2>/dev/null
 
     # Move the mount points of some filesystems over to
     # the corresponding directories under the real root filesystem.
-- 
1.8.1.2




More information about the Openembedded-core mailing list