Jakub Kicinski kuba@kernel.org writes:
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-sty...
? It could be the base OS difference, too, but that's harder to confirm.
Yes - that's the way I run it. But I didn't try to use any of the stress inducing options. I'll work on it with that.
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.
Ack.