On Thu, Aug 14, 2025 at 7:57 AM Ales Musil <[email protected]> wrote:

>
>
> On Wed, Aug 13, 2025 at 5:54 PM Dumitru Ceara via dev <
> [email protected]> wrote:
>
>> As pointed out in the bug report, ovn-controller was not scheduling an
>> immediate wake when it had detected a NetLink error due to a route
>> operation it tried to do.  Instead it was doing that too late, in the
>> en_route_exchange_status I-P node callback.  That one however is called
>> _before_ en_route_exchange runs.
>>
>> Instead schedule an immediate wake exactly when we detect the error.  In
>> the next iteration en_route_exchange_status will propagate the error and
>> trigger en_route_exchange_status to run.
>>
>> Fixes: 30587c6e4794 ("controller: Add en_route_exchange_status I-P node.")
>> Reported-at:
>> https://mail.openvswitch.org/pipermail/ovs-dev/2025-August/425298.html
>> Reported-by: Xavier Simonart <[email protected]>
>> Signed-off-by: Dumitru Ceara <[email protected]>
>> ---
>>  controller/ovn-controller.c | 1 -
>>  controller/route-exchange.c | 4 ++++
>>  2 files changed, 4 insertions(+), 1 deletion(-)
>>
>> diff --git a/controller/ovn-controller.c b/controller/ovn-controller.c
>> index 945952c5c4..00d7b4cf19 100644
>> --- a/controller/ovn-controller.c
>> +++ b/controller/ovn-controller.c
>> @@ -5441,7 +5441,6 @@ en_route_exchange_status_run(struct engine_node
>> *node OVS_UNUSED, void *data)
>>
>>      if (res->netlink_trigger_run) {
>>          state = EN_UPDATED;
>> -        poll_immediate_wake();
>>      } else {
>>          state = EN_UNCHANGED;
>>      }
>> diff --git a/controller/route-exchange.c b/controller/route-exchange.c
>> index 360ffa14ee..161385aa49 100644
>> --- a/controller/route-exchange.c
>> +++ b/controller/route-exchange.c
>> @@ -21,6 +21,7 @@
>>  #include <net/if.h>
>>  #include <stdbool.h>
>>
>> +#include "openvswitch/poll-loop.h"
>>  #include "openvswitch/vlog.h"
>>  #include "openvswitch/list.h"
>>
>> @@ -221,6 +222,9 @@ static int route_exchange_nl_status;
>>      do {                                        \
>>          if (!route_exchange_nl_status) {        \
>>              route_exchange_nl_status = (error); \
>> +            if (error) {                        \
>> +                poll_immediate_wake();          \
>> +            }                                   \
>>          }                                       \
>>      } while (0)
>>
>> --
>> 2.50.1
>>
>> _______________________________________________
>> dev mailing list
>> [email protected]
>> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>>
>>
> Looks good to me, thanks.
> Acked-by: Ales Musil <[email protected]>
>

Thank you Dumitru,

I went ahead and applied this to main and brackported to 25.03.

Regards,
Ales
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to