diff options
author | Scott Moser <smoser@brickies.net> | 2016-08-23 16:48:40 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2016-08-23 16:48:40 -0400 |
commit | c1da72b7cb855d6ead63cbfc555514963283c38b (patch) | |
tree | 692e3db6133d2bea326c4ec8d70b5932b91e2d6c /udev | |
parent | d269e3c782f13795b00e72413d5be43e7173465f (diff) | |
parent | 210b041b2fead7a57af91f60a6f89d9e5aa1ed4a (diff) | |
download | vyos-cloud-init-c1da72b7cb855d6ead63cbfc555514963283c38b.tar.gz vyos-cloud-init-c1da72b7cb855d6ead63cbfc555514963283c38b.zip |
merge trunk at 0.7.7~bzr1192
Diffstat (limited to 'udev')
-rwxr-xr-x | udev/cloud-init-wait | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/udev/cloud-init-wait b/udev/cloud-init-wait index 7d53dee4..b434005d 100755 --- a/udev/cloud-init-wait +++ b/udev/cloud-init-wait @@ -3,16 +3,18 @@ CI_NET_READY="/run/cloud-init/network-config-ready" LOG="/run/cloud-init/${0##*/}.log" LOG_INIT=0 +MAX_WAIT=60 DEBUG=0 block_until_ready() { - local fname="$1" - local naplen="$2" max="$3" n=0 - while ! [ -f "$fname" ]; do - n=$(($n+1)) - [ "$n" -ge "$max" ] && return 1 - sleep $naplen - done + local fname="$1" max="$2" + [ -f "$fname" ] && return 0 + # udevadm settle below will exit at the first of 3 conditions + # 1.) timeout 2.) file exists 3.) all in-flight udev events are processed + # since this is being run from a udev event, the 3 wont happen. + # thus, this is essentially a inotify wait or timeout on a file in /run + # that is created by cloud-init-local. + udevadm settle "--timeout=$max" "--exit-if-exists=$fname" } log() { @@ -56,7 +58,7 @@ main() { return 0 fi - block_until_ready "$readyfile" .1 600 || + block_until_ready "$readyfile" "$MAX_WAIT" || { log "failed waiting for ready on $INTERFACE"; return 1; } log "net config ready" |