From 337125545ddc4d7a350130503e088e16d20b7cb2 Mon Sep 17 00:00:00 2001 From: Hongxu Jia Date: Tue, 18 Jun 2013 20:14:14 +0800 Subject: init-live.sh: fix automount failed occasionally 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] (From OE-Core rev: 2f209a7045a93e7e42f90418a42f464827b4a7f8) Signed-off-by: Hongxu Jia Signed-off-by: Saul Wold Signed-off-by: Richard Purdie --- meta/recipes-core/initrdscripts/files/init-live.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'meta/recipes-core/initrdscripts') diff --git a/meta/recipes-core/initrdscripts/files/init-live.sh b/meta/recipes-core/initrdscripts/files/init-live.sh index 804e16ec6f..82042bf2ee 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. -- cgit v1.2.3-54-g00ecf