mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-25 14:05:18 +00:00
util: mdev: Treat the 'name' sysfs attribute as optional
When commit 3545cbef moved the sysfs attribute reading logic from _udev.c module to virmdev.c, it had to replace our udev read wrappers with the ones available from virfile.c. The problem is that the original logic worked correctly with udev read wrappers which don't return an error code for a missing attribute, virfile.c readers however - not so much. Therefore add another parameter to the macro, so we can again accept the fact that optional attributes may be missing. Signed-off-by: Erik Skultety <eskultet@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
parent
1cdc9ecebd
commit
87c991d51e
@ -505,10 +505,13 @@ virMediatedDeviceTypeReadAttrs(const char *sysfspath,
|
|||||||
int ret = -1;
|
int ret = -1;
|
||||||
virMediatedDeviceTypePtr tmp = NULL;
|
virMediatedDeviceTypePtr tmp = NULL;
|
||||||
|
|
||||||
#define MDEV_GET_SYSFS_ATTR(attr, dst, cb) \
|
#define MDEV_GET_SYSFS_ATTR(attr, dst, cb, optional) \
|
||||||
do { \
|
do { \
|
||||||
if (cb(dst, "%s/%s", sysfspath, attr) < 0) \
|
int rc; \
|
||||||
goto cleanup; \
|
if ((rc = cb(dst, "%s/%s", sysfspath, attr)) < 0) { \
|
||||||
|
if (rc != -2 || !optional) \
|
||||||
|
goto cleanup; \
|
||||||
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
if (VIR_ALLOC(tmp) < 0)
|
if (VIR_ALLOC(tmp) < 0)
|
||||||
@ -517,10 +520,12 @@ virMediatedDeviceTypeReadAttrs(const char *sysfspath,
|
|||||||
if (VIR_STRDUP(tmp->id, last_component(sysfspath)) < 0)
|
if (VIR_STRDUP(tmp->id, last_component(sysfspath)) < 0)
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
|
|
||||||
MDEV_GET_SYSFS_ATTR("name", &tmp->name, virFileReadValueString);
|
/* @name sysfs attribute is optional, so getting ENOENT is fine */
|
||||||
MDEV_GET_SYSFS_ATTR("device_api", &tmp->device_api, virFileReadValueString);
|
MDEV_GET_SYSFS_ATTR("name", &tmp->name, virFileReadValueString, true);
|
||||||
|
MDEV_GET_SYSFS_ATTR("device_api", &tmp->device_api,
|
||||||
|
virFileReadValueString, false);
|
||||||
MDEV_GET_SYSFS_ATTR("available_instances", &tmp->available_instances,
|
MDEV_GET_SYSFS_ATTR("available_instances", &tmp->available_instances,
|
||||||
virFileReadValueUint);
|
virFileReadValueUint, false);
|
||||||
|
|
||||||
#undef MDEV_GET_SYSFS_ATTR
|
#undef MDEV_GET_SYSFS_ATTR
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user