mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-27 19:11:16 +00:00
nodedev: update transient mdevs
Instead of updating defined mdevs only add another update for active devices as well to cover transient mdev devices as well. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2143158 Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com> Reviewed-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
e53291514c
commit
44a0f2f0c8
@ -1636,6 +1636,24 @@ virMdevctlListDefined(virNodeDeviceDef ***devs, char **errmsg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virMdevctlListActive(virNodeDeviceDef ***devs, char **errmsg)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
g_autofree char *output = NULL;
|
||||||
|
g_autoptr(virCommand) cmd = nodeDeviceGetMdevctlListCommand(false, &output, errmsg);
|
||||||
|
|
||||||
|
if (virCommandRun(cmd, &status) < 0 || status != 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!output)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return nodeDeviceParseMdevctlJSON(output, devs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
typedef struct _virMdevctlForEachData virMdevctlForEachData;
|
typedef struct _virMdevctlForEachData virMdevctlForEachData;
|
||||||
struct _virMdevctlForEachData {
|
struct _virMdevctlForEachData {
|
||||||
int ndefs;
|
int ndefs;
|
||||||
@ -1699,6 +1717,8 @@ int
|
|||||||
nodeDeviceUpdateMediatedDevices(void)
|
nodeDeviceUpdateMediatedDevices(void)
|
||||||
{
|
{
|
||||||
g_autofree virNodeDeviceDef **defs = NULL;
|
g_autofree virNodeDeviceDef **defs = NULL;
|
||||||
|
g_autofree virNodeDeviceDef **act_defs = NULL;
|
||||||
|
int act_ndefs = 0;
|
||||||
g_autofree char *errmsg = NULL;
|
g_autofree char *errmsg = NULL;
|
||||||
g_autofree char *mdevctl = NULL;
|
g_autofree char *mdevctl = NULL;
|
||||||
virMdevctlForEachData data = { 0, };
|
virMdevctlForEachData data = { 0, };
|
||||||
@ -1725,6 +1745,17 @@ nodeDeviceUpdateMediatedDevices(void)
|
|||||||
if (nodeDeviceUpdateMediatedDevice(defs[i]) < 0)
|
if (nodeDeviceUpdateMediatedDevice(defs[i]) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
/* Update active/transient mdev devices */
|
||||||
|
if ((act_ndefs = virMdevctlListActive(&act_defs, &errmsg)) < 0) {
|
||||||
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
|
_("failed to query mdevs from mdevctl: %1$s"), errmsg);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < act_ndefs; i++)
|
||||||
|
if (nodeDeviceUpdateMediatedDevice(act_defs[i]) < 0)
|
||||||
|
return -1;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user