[PATCH v3] nodedev: ignore EINVAL from libudev in udevEventHandleThread

Michal Prívozník mprivozn at redhat.com
Thu Nov 10 10:52:05 UTC 2022


On 11/10/22 10:36, christian.ehrhardt at canonical.com wrote:
> From: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> 
> Certain udev entries might be of a size that makes libudev emit EINVAL
> which right now leads to udevEventHandleThread exiting. Due to no more
> handling events other elements of libvirt will start pushing for events
> to be consumed which never happens causing a busy loop burning a cpu
> without any gain.
> 
> After evaluation of the example case discussed in in #245 and a test
> run ignoring EINVAL it was considered safe to add EINVAL to the ignored
> errnos to not exit udevEventHandleThread giving it more resilience.
> 
> The root cause is in systemd and by now was discussed and fixed via
> https://github.com/systemd/systemd/issues/24987, but hardening libvirt
> to be able to better deal with EINVAL returned still is the right thing
> to avoid the reported busy loops on systemd with older systemd versions.
> 
> Fixes: https://gitlab.com/libvirt/libvirt/-/issues/245
> 
> Signed-off-by: Christian Ehrhardt <christian.ehrhardt at canonical.com>
> Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
> ---
>  src/node_device/node_device_udev.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)

Pushed now, sorry for the delay.

Michal



More information about the libvir-list mailing list