49 lines
2.1 KiB
Diff
49 lines
2.1 KiB
Diff
|
From 08c8ef5eb30983d6ca004e84a11fe7f2547f984e Mon Sep 17 00:00:00 2001
|
||
|
Message-Id: <08c8ef5eb30983d6ca004e84a11fe7f2547f984e@dist-git>
|
||
|
From: Jonathon Jongsma <jjongsma@redhat.com>
|
||
|
Date: Tue, 23 Aug 2022 12:28:02 -0500
|
||
|
Subject: [PATCH] nodedev: wait a bit longer for new node devices
|
||
|
|
||
|
Openstack developers reported that newly-created mdevs were not
|
||
|
recognized by libvirt until after a libvirt daemon restart. The source
|
||
|
of the problem appears to be that when libvirt gets the udev 'add'
|
||
|
event, the sysfs tree for that device might not be ready and so libvirt
|
||
|
waits 100ms for it to appear (max 100 waits of 1ms each). But in the
|
||
|
OpenStack environment, the sysfs tree for new mediated devices was
|
||
|
taking closer to 250ms to appear and therefore libvirt gave up waiting
|
||
|
and didn't add these new devices to its list of nodedevs.
|
||
|
|
||
|
By changing the wait time to 1 second (max 100 waits of 10ms each), this
|
||
|
should provide enough time to enable these deployments to recognize
|
||
|
newly-created mediated devices, but it shouldn't increase the delay for
|
||
|
more traditional deployments too much.
|
||
|
|
||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2109450
|
||
|
|
||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||
|
Reviewed-by: Erik Skultety <eskultet@redhat.com>
|
||
|
(cherry picked from commit e4f9682ebc442bb5dfee807ba618c8863355776d)
|
||
|
|
||
|
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2141364
|
||
|
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
|
||
|
---
|
||
|
src/node_device/node_device_udev.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
|
||
|
index 3d69bdedae..1f63162e23 100644
|
||
|
--- a/src/node_device/node_device_udev.c
|
||
|
+++ b/src/node_device/node_device_udev.c
|
||
|
@@ -1036,7 +1036,7 @@ udevProcessMediatedDevice(struct udev_device *dev,
|
||
|
|
||
|
linkpath = g_strdup_printf("%s/mdev_type", udev_device_get_syspath(dev));
|
||
|
|
||
|
- if (virFileWaitForExists(linkpath, 1, 100) < 0) {
|
||
|
+ if (virFileWaitForExists(linkpath, 10, 100) < 0) {
|
||
|
virReportSystemError(errno,
|
||
|
_("failed to wait for file '%s' to appear"),
|
||
|
linkpath);
|
||
|
--
|
||
|
2.38.1
|
||
|
|