[libvirt PATCH v2 5/5] nodedev: improve error message when destroying an inactive device
Boris Fiuczynski
fiuczy at linux.ibm.com
Wed Jun 23 13:02:33 UTC 2021
On 6/22/21 9:53 PM, Jonathon Jongsma wrote:
> When trying to destroy a node device that is not active, we end up with
> a confusing error message:
>
> # nodedev-destroy mdev_88a6b868_46bd_4015_8e5b_26107f82da38
> error: Failed to destroy node device 'mdev_88a6b868_46bd_4015_8e5b_26107f82da38'
> error: failed to access '/sys/bus/mdev/devices/88a6b868-46bd-4015-8e5b-26107f82da38/iommu_group': No such file or directory
>
> With this patch, the error is more clear:
>
> # nodedev-destroy mdev_88a6b868_46bd_4015_8e5b_26107f82da38
> error: Failed to destroy node device 'mdev_88a6b868_46bd_4015_8e5b_26107f82da38'
> error: Requested operation is not valid: Device 'mdev_88a6b868_46bd_4015_8e5b_26107f82da38' is not active
>
> Signed-off-by: Jonathon Jongsma <jjongsma at redhat.com>
> ---
> src/node_device/node_device_driver.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/src/node_device/node_device_driver.c b/src/node_device/node_device_driver.c
> index 497db0006a..721ba96203 100644
> --- a/src/node_device/node_device_driver.c
> +++ b/src/node_device/node_device_driver.c
> @@ -1227,6 +1227,15 @@ nodeDeviceDestroy(virNodeDevicePtr device)
>
> ret = 0;
> } else if (nodeDeviceHasCapability(def, VIR_NODE_DEV_CAP_MDEV)) {
> + g_autofree char *vfiogroup = NULL;
> + VIR_AUTOCLOSE fd = -1;
> +
> + if (!virNodeDeviceObjIsActive(obj)) {
> + virReportError(VIR_ERR_OPERATION_INVALID,
> + _("Device '%s' is not active"), def->name);
> + goto cleanup;
> + }
> +
> /* If this mediated device is in use by a vm, attempting to stop it
> * will block until the vm closes the device. The nodedev driver
> * cannot query the hypervisor driver to determine whether the device
> @@ -1236,10 +1245,7 @@ nodeDeviceDestroy(virNodeDevicePtr device)
> * to be opened by one user at a time. So if we get EBUSY when opening
> * the group, we infer that the device is in use and therefore we
> * shouldn't try to remove the device. */
> - g_autofree char *vfiogroup =
> - virMediatedDeviceGetIOMMUGroupDev(def->caps->data.mdev.uuid);
> - VIR_AUTOCLOSE fd = -1;
> -
> + vfiogroup = virMediatedDeviceGetIOMMUGroupDev(def->caps->data.mdev.uuid);
> if (!vfiogroup)
> goto cleanup;
>
>
Reviewed-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
--
Mit freundlichen Grüßen/Kind regards
Boris Fiuczynski
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
More information about the libvir-list
mailing list