Some network driver will take long time to initialize. We have an example in a HP machine which take about one minute for this. The callback such as "ip link set <dev> up" will fail, afterwards setup for network will also fail. Fix this by add a new function wait_for_if_link, wait the link ready before use it. Signed-off-by: Dave Young <dyoung@xxxxxxxxxx> --- modules.d/40network/net-lib.sh | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) --- dracut.orig/modules.d/40network/net-lib.sh +++ dracut/modules.d/40network/net-lib.sh @@ -323,6 +323,19 @@ parse_ifname_opts() { } +# some network driver need long time to initialize, wait before it's ready. +wait_for_if_link() { + local cnt=0 + local li + while [ $cnt -lt 600 ]; do + li=$(ip -o link show dev $1 2>/dev/null) + [ -n "$li" ] && return 0 + sleep 0.1 + cnt=$(($cnt+1)) + done + return 1 +} + wait_for_if_up() { local cnt=0 local li @@ -347,6 +360,8 @@ wait_for_route_ok() { } linkup() { - ip link set $1 up 2>/dev/null && wait_for_if_up $1 2>/dev/null + wait_for_if_link $1 2>/dev/null\ + && ip link set $1 up 2>/dev/null\ + && wait_for_if_up $1 2>/dev/null } -- To unsubscribe from this list: send the line "unsubscribe initramfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html