lxc-auto: step by 1 sec up to $max_timeout

If the user defines a $max_timeout of 30, the service will wait 30 seconds
before it considers lxc-stop complete even though lxc-stop might actually
finish much sooner.  This introduces an unneeded delay.

This commit changes the behavior to check once per second to see when lxc-stop
actually stops doing so up to $max_timeout.  It also slightly simplifies the
code with logic to append the -t $max_timeout to the script.

Signed-off-by: John Audia <graysky@archlinux.us>
This commit is contained in:
John Audia 2021-09-19 14:35:09 -04:00 committed by Rosen Penev
parent 7259eea63f
commit 7984d2d74a
1 changed files with 10 additions and 6 deletions

View File

@ -35,11 +35,9 @@ stop_container() {
fi
if [ -n "$name" ]; then
if [ "$timeout" = "0" ]; then
/usr/bin/lxc-stop -n "$name" &
else
/usr/bin/lxc-stop -n "$name" -t $timeout &
fi
[ "$timeout" = "0" ] && postargs=" -t $max_timeout"
/usr/bin/lxc-stop -n "$name" "$postargs" &
export STOPPID=$!
fi
}
@ -54,7 +52,13 @@ stop() {
# ensure e.g. shutdown doesn't occur before maximum timeout on
# containers that are shutting down
if [ $max_timeout -gt 0 ]; then
sleep $max_timeout
for i in $(seq 1 $max_timeout); do
if [ -d /proc/"$STOPPID" ]; then
sleep 1s
else
return 0
fi
done
fi
}