Subject: Re: [PATCH v2 net-next 0/7] selftests: net: Switch pmtu.sh to use the internal ovs script.

From: Jakub Kicinski <[email-masked]>
Date: Mon, 24 Jun 2024 15:30:23 -0700

On Mon, 24 Jun 2024 12:53:45 -0400 Aaron Conole wrote:
> Additionally, the "Cannot find device ..." text comes from an iproute2
> utility output.  The only place we actually interact with that is via
> the call at pmtu.sh:973:
> 
> 	run_cmd ip link set ovs_br0 up
> 
> Maybe it is possible that the link isn't up (could some port memory
> allocation or message be delaying it?) yet in the virtual environment.

Depends on how the creation is implemented, normally device creation
over netlink is synchronous. Just to be sure have you tried to repro
with vng:

https://github.com/linux-netdev/nipa/wiki/How-to-run-netdev-selftests-CI-style

? It could be the base OS difference, too, but that's harder to confirm.

> To confirm, is it possible to run in the constrained environment, but
> put a 5s sleep or something?  I will add the following either as a
> separate patch (ie 7/8), or I can fold it into 6/7 (and drop Stefano's
> ACK waiting for another review):
> 
> 
> wait_for_if() {
>    if ip link show "$2" >/dev/null 2>&1; then return 0; fi
> 
>    for d in `seq 1 30`; do
>       sleep 1
>       if ip link show "$2" >/dev/null 2>&1; then return 0; fi
>    done
>    return 1
> }
> 
> ....
>  	setup_ovs_br_internal || setup_ovs_br_vswitchd || return $ksft_skip
> +	wait_for_if "ovs_br0"
>  	run_cmd ip link set ovs_br0 up
> ....
> 
> Does it make sense or does it seem like I am way off base?

sleep 1 is a bit high (sleep does accept fractional numbers!)
but otherwise worth trying, if you can't repro locally.