mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-13 08:58:33 +03:00
nodedev: refactor virMediatedDeviceGetIOMMUGroupNum()
Currently virMediatedDeviceGetIOMMUGroupDev() looks up the iommu group number and uses that to construct a path to the iommu group device. virMediatedDeviceGetIOMMUGroupNum() then uses that device path and takes the basename to get the group number. That's unnecessary extra string manipulation for *GroupNum(). Reverse the implementations and make *GroupDev() call *GroupNum(). Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com> Reviewed-by: Laine Stump <laine@redhat.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
e8794b911c
commit
12850ed257
@ -201,42 +201,38 @@ virMediatedDeviceGetPath(virMediatedDevice *dev)
|
||||
char *
|
||||
virMediatedDeviceGetIOMMUGroupDev(const char *uuidstr)
|
||||
{
|
||||
g_autofree char *result_path = NULL;
|
||||
g_autofree char *result_file = NULL;
|
||||
g_autofree char *iommu_path = NULL;
|
||||
g_autofree char *dev_path = virMediatedDeviceGetSysfsPath(uuidstr);
|
||||
int group_num = virMediatedDeviceGetIOMMUGroupNum(uuidstr);
|
||||
|
||||
iommu_path = g_strdup_printf("%s/iommu_group", dev_path);
|
||||
|
||||
if (!virFileExists(iommu_path)) {
|
||||
virReportSystemError(errno, _("failed to access '%s'"), iommu_path);
|
||||
if (group_num < 0)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (virFileResolveLink(iommu_path, &result_path) < 0) {
|
||||
virReportSystemError(errno, _("failed to resolve '%s'"), iommu_path);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
result_file = g_path_get_basename(result_path);
|
||||
|
||||
return g_strdup_printf("/dev/vfio/%s", result_file);
|
||||
return g_strdup_printf("/dev/vfio/%i", group_num);
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
virMediatedDeviceGetIOMMUGroupNum(const char *uuidstr)
|
||||
{
|
||||
g_autofree char *vfio_path = NULL;
|
||||
g_autofree char *result_path = NULL;
|
||||
g_autofree char *group_num_str = NULL;
|
||||
g_autofree char *iommu_path = NULL;
|
||||
g_autofree char *dev_path = virMediatedDeviceGetSysfsPath(uuidstr);
|
||||
unsigned int group_num = -1;
|
||||
|
||||
if (!(vfio_path = virMediatedDeviceGetIOMMUGroupDev(uuidstr)))
|
||||
iommu_path = g_strdup_printf("%s/iommu_group", dev_path);
|
||||
|
||||
if (!virFileExists(iommu_path)) {
|
||||
virReportSystemError(errno, _("failed to access '%s'"), iommu_path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
group_num_str = g_path_get_basename(vfio_path);
|
||||
if (virFileResolveLink(iommu_path, &result_path) < 0) {
|
||||
virReportSystemError(errno, _("failed to resolve '%s'"), iommu_path);
|
||||
return -1;
|
||||
}
|
||||
|
||||
group_num_str = g_path_get_basename(result_path);
|
||||
ignore_value(virStrToLong_ui(group_num_str, NULL, 10, &group_num));
|
||||
|
||||
return group_num;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user