On Mon, 17 Aug 2026 16:16:02 -0400
Randy Tice <[email protected]> wrote:

> -     if (ret < 0 && errno == EAGAIN)
> +     if (ret < 0 &&
> +             (errno == EAGAIN || errno == EWOULDBLOCK || errno == EINTR)) {
> +             /* non-blocking or interrupted */
>               return;
> -     else if (ret <= 0) {
> +     } else if (ret < 0 && (errno == ENOBUFS)) {
> +             /* non-fatal transient memory condition */
> +             EAL_LOG(ERR, "unexpected error on uevent recv: %s",
> +                     strerror(errno));
> +             return;
> +     } else if (ret <= 0) {
>               /* connection is closed or broken, can not up again. */
>               EAL_LOG(ERR, "uevent socket connection is broken.");
>               rte_eal_alarm_set(1, dev_delayed_unregister, NULL);
> -- 
Since there are multiple error conditions it reads better with single (ret < 0) 
if followed
by looking at errno.

PS: if you are getting ENOBUFS, the root cause is not having big enough socket 
receive
buffer and/or starving out the core handling control operations.

If you looks a uevent the internal state of devices is corrupted. Probably need
to figure out how to schedule some form of rescanning.

Reply via email to