Re: [PATCH 6/8] nodedev: add ccwgroup node device support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 04, 2025 at 18:11:41 +0100, Boris Fiuczynski wrote:
> Add ccwgroup node device type supporting qeth generic driver.
> 
> Signed-off-by: Boris Fiuczynski <fiuczy@xxxxxxxxxxxxx>
> ---
>  docs/manpages/virsh.rst                       |   6 +-
>  include/libvirt/libvirt-nodedev.h             |   1 +
>  src/conf/node_device_conf.c                   | 212 ++++++++++++++++++
>  src/conf/node_device_conf.h                   |  29 ++-
>  src/conf/schemas/nodedev.rng                  |  43 ++++
>  src/conf/virnodedeviceobj.c                   |   4 +-
>  src/libvirt_private.syms                      |   2 +
>  src/node_device/node_device_driver.c          |   5 +
>  src/node_device/node_device_udev.c            |  41 ++++
>  src/util/virccw.c                             | 102 +++++++++
>  src/util/virccw.h                             |  22 ++
>  tests/nodedevschemadata/ccwgroup_0_0_bd00.xml |  20 ++
>  tests/nodedevxml2xmlout/ccwgroup_0_0_bd00.xml |   1 +
>  tests/nodedevxml2xmltest.c                    |   1 +
>  tools/virsh-nodedev.c                         |   3 +
>  15 files changed, 487 insertions(+), 5 deletions(-)
>  create mode 100644 tests/nodedevschemadata/ccwgroup_0_0_bd00.xml
>  create mode 120000 tests/nodedevxml2xmlout/ccwgroup_0_0_bd00.xml

[...]


> +static int
> +udevProcessCCWGroup(struct udev_device *device,
> +                    virNodeDeviceDef *def)
> +{
> +    const char *devtype = udev_device_get_devtype(device);
> +    virNodeDevCapData *data = &def->caps->data;
> +
> +    data->ccwgroup_dev.address = virCCWDeviceAddressFromString(udev_device_get_sysname(device));
> +
> +    udevCCWGetState(device, &data->ccwgroup_dev.state);
> +
> +    udevGenerateDeviceName(device, def, NULL);
> +
> +    if ((data->ccwgroup_dev.type = virNodeDevCCWGroupCapTypeFromString(devtype)) < 0)
> +        return -1;

Apart from the broken build where clang complains about assignment to
the unsigned enum which I've fixed, this doesn't report an error ...

> +
> +    switch (data->ccwgroup_dev.type) {
> +    case VIR_NODE_DEV_CAP_CCWGROUP_QETH_GENERIC:
> +        {
> +            virCCWGroupTypeQeth *qeth = &data->ccwgroup_dev.qeth;
> +            /* process qeth device information */
> +            udevGetStringSysfsAttr(device, "card_type", &qeth->card_type);
> +            udevGetStringSysfsAttr(device, "chpid", &qeth->chpid);
> +        }
> +        break;
> +    case VIR_NODE_DEV_CAP_CCWGROUP_LAST:
> +        return -1;
> +    }
> +
> +    if (virNodeDeviceGetCCWGroupDynamicCaps(def->sysfs_path,
> +                                            &data->ccwgroup_dev) < 0)

... and neither this at least on 2 code paths:

 1) the dummy impl if not running on linux
 2) if the assertion that a group must be non-empty fails in the real
 code path inside virCCWGroupDeviceGetMembers.

The caller does seem to care about errors as other code paths do set
them, thus this should as well.

> +        return -1;
> +
> +    return 0;
> +}



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux