From 1003d8141209fdbd50d02aec2cad4690aec48702 Mon Sep 17 00:00:00 2001 From: Guevenc Guelce Date: Wed, 8 Jul 2020 18:31:34 +0200 Subject: [PATCH] znetconf: introduce better ways to locate udevadm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When udevadm is going to be used, try to locate it in $PATH and if it fails, try to locate it in well-known binary paths. Signed-off-by: Guevenc Guelce Signed-off-by: Jan Höppner --- zconf/znetconf | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/zconf/znetconf b/zconf/znetconf index ba8dec4..497e97f 100755 --- a/zconf/znetconf +++ b/zconf/znetconf @@ -63,14 +63,8 @@ CMD=$(basename $0) LSZNET=/lib/s390-tools/lsznet.raw LSZNET_ARGS=-a LSZNET_CALL="$LSZNET $LSZNET_ARGS" -UDEVSETTLE=/sbin/udevadm -if [ ! -e $UDEVSETTLE ] -then - UDEVSETTLE=/sbin/udevsettle - UDEVSETTLE_CALL="$UDEVSETTLE --timeout=10" -else - UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10" -fi +UDEVSETTLE=udevadm +UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10" SYSFSDIR=$(cat /proc/mounts|awk '$3=="sysfs"{print $2; exit}') CCWGROUPBUS_DIR=$SYSFSDIR/bus/ccwgroup CCWDEV_DIR=$SYSFSDIR/bus/ccw/devices @@ -261,6 +255,35 @@ function lookup_lan_layer() #============================================================================== +function prepare_udevsettle_cmd() +{ + # is the command available in $PATH + if ! [ -x "$(command -v $UDEVSETTLE)" ] + then + # check the well known locations. + if [ -e "/sbin/udevadm" ] + then + UDEVSETTLE=/sbin/udevadm + UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10" + elif [ -e "/usr/bin/udevadm" ] + then + UDEVSETTLE=/usr/bin/udevadm + UDEVSETTLE_CALL="$UDEVSETTLE settle --timeout=10" + elif [ -e "/sbin/udevsettle" ] + then + # Fallback to udevsettle + UDEVSETTLE=/sbin/udevsettle + UDEVSETTLE_CALL="$UDEVSETTLE --timeout=10" + else + UDEVSETTLE="" + UDEVSETTLE_CALL="" + echo "Failed to find any candidate for udevsettle" + fi + fi +} + +#============================================================================== + function lookup_type_and_lan_or_vswitch_name() { local DEVNO="$1" @@ -506,8 +529,9 @@ function wait_for_net_device() local CMD_FINDNETLINK="find $CCWGROUPBUS_DEVICEDIR/$CCWGROUPDEVNO/ -type l -name net*" local LINKNAME="" + prepare_udevsettle_cmd # polling loop to wait for net device to become available - if [ -e $UDEVSETTLE ] + if [ "$UDEVSETTLE" != "" ] then $UDEVSETTLE_CALL fi -- 2.26.2