core: prevent the activation of unavailable OVS interfaces only

Preventing the activation of unavailable devices for all device types is
too aggresive and leads to race conditions, e.g when a non-virtual bond
port gets a carrier, preventing the device to be a good candidate for
the connection.

Instead, enforce this check only on OVS interfaces as NetworkManager
just makes sure that ovsdb->ready is set to TRUE.

https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/merge_requests/2139

Fixes: 774badb151 ('core: prevent the activation of unavailable devices')
This commit is contained in:
Fernando Fernandez Mancera
2025-02-17 23:10:53 +01:00
parent 006a3fb51a
commit a1c05d2ce6

View File

@@ -4699,7 +4699,13 @@ found_better:
if (nm_g_hash_table_contains(exclude_devices, device))
continue;
if (!nm_device_is_available(device,
/* During startup, NM performs a cleanup of the ovsdb to remove previous entries.
* Before the device is suitable for the connection, it must have ovsdb->ready set
* to TRUE. Performing this check in all kind of interfaces is too agressive and leads
* to race conditions, e.g when a non-virtual bond port gets a carrier, preventing the
* device to be a good candidate for the connection. */
if (nm_device_get_device_type(device) == NM_DEVICE_TYPE_OVS_INTERFACE
&& !nm_device_is_available(device,
for_user_request
? NM_DEVICE_CHECK_DEV_AVAILABLE_FOR_USER_REQUEST
: NM_DEVICE_CHECK_DEV_AVAILABLE_NONE))