nodedev: add mdev support to virNodeDeviceDestroy()

Add the ability to destroy mdev node devices via the mdevctl utility.

Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Reviewed-by: Erik Skultety <eskultet@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Jonathon Jongsma 2020-06-18 16:06:02 -05:00 committed by Erik Skultety
parent 9badcbbb1d
commit 88043da227
2 changed files with 35 additions and 0 deletions

View File

@ -786,6 +786,32 @@ nodeDeviceCreateXML(virConnectPtr conn,
}
virCommandPtr
nodeDeviceGetMdevctlStopCommand(const char *uuid)
{
return virCommandNewArgList(MDEVCTL,
"stop",
"-u",
uuid,
NULL);
}
static int
virMdevctlStop(virNodeDeviceDefPtr def)
{
int status;
g_autoptr(virCommand) cmd = NULL;
cmd = nodeDeviceGetMdevctlStopCommand(def->caps->data.mdev.uuid);
if (virCommandRun(cmd, &status) < 0 || status != 0)
return -1;
return 0;
}
int
nodeDeviceDestroy(virNodeDevicePtr device)
{
@ -832,6 +858,13 @@ nodeDeviceDestroy(virNodeDevicePtr device)
if (virVHBAManageVport(parent_host, wwpn, wwnn, VPORT_DELETE) < 0)
goto cleanup;
ret = 0;
} else if (nodeDeviceHasCapability(def, VIR_NODE_DEV_CAP_MDEV)) {
if (virMdevctlStop(def) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
_("Unable to stop mediated device"));
goto cleanup;
}
ret = 0;
} else {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",

View File

@ -121,3 +121,5 @@ nodeConnectNodeDeviceEventDeregisterAny(virConnectPtr conn,
virCommandPtr
nodeDeviceGetMdevctlStartCommand(virNodeDeviceDefPtr def,
char **uuid_out);
virCommandPtr
nodeDeviceGetMdevctlStopCommand(const char *uuid);