[PATCH 4/5] node_device: detect DASD devices

Erik Skultety eskultet at redhat.com
Tue Sep 8 15:50:17 UTC 2020


On Mon, Aug 24, 2020 at 01:59:14PM +0200, Bjoern Walk wrote:
> From: Boris Fiuczynski <fiuczy at linux.ibm.com>
>
> Make Direct Access Storage Devices (DASDs) available in the node_device driver.
>
> Reviewed-by: Bjoern Walk <bwalk at linux.ibm.com>
> Signed-off-by: Boris Fiuczynski <fiuczy at linux.ibm.com>
> ---
>  src/node_device/node_device_udev.c | 24 ++++++++++++++++++++++++
>  1 file changed, 24 insertions(+)
>
> diff --git a/src/node_device/node_device_udev.c b/src/node_device/node_device_udev.c
> index 1c4df709..5f9d67cc 100644
> --- a/src/node_device/node_device_udev.c
> +++ b/src/node_device/node_device_udev.c
> @@ -871,6 +871,19 @@ udevProcessSD(struct udev_device *device,
>  }
>
>
> +static int
> +udevProcessDasd(struct udev_device *device,
> +                virNodeDeviceDefPtr def)

s/Dasd/DASD

> +{
> +    virNodeDevCapStoragePtr storage = &def->caps->data.storage;
> +
> +    if (udevGetStringSysfsAttr(device, "device/uid", &storage->serial) < 0)
> +        return -1;
> +
> +    return udevProcessDisk(device, def);
> +}
> +
> +
>  /* This function exists to deal with the case in which a driver does
>   * not provide a device type in the usual place, but udev told us it's
>   * a storage device, and we can make a good guess at what kind of
> @@ -891,6 +904,15 @@ udevKludgeStorageType(virNodeDeviceDefPtr def)
>                    def->sysfs_path);
>          return 0;
>      }
> +    /* dasd disk */
> +    if (STRPREFIX(def->caps->data.storage.block, "/dev/dasd")) {
> +        def->caps->data.storage.drive_type = g_strdup("dasd");
> +        VIR_DEBUG("Found storage type '%s' for device "
> +                  "with sysfs path '%s'",
> +                  def->caps->data.storage.drive_type,
> +                  def->sysfs_path);

I understand why we would need it for /dev/vdX, but can udev not know the
drive_type from kernel? IOW Do we really need ^this hunk?

> +        return 0;
> +    }
>      VIR_DEBUG("Could not determine storage type "
>                "for device with sysfs path '%s'", def->sysfs_path);
>      return -1;
> @@ -978,6 +1000,8 @@ udevProcessStorage(struct udev_device *device,
>          ret = udevProcessFloppy(device, def);
>      } else if (STREQ(def->caps->data.storage.drive_type, "sd")) {
>          ret = udevProcessSD(device, def);
> +    } else if (STREQ(def->caps->data.storage.drive_type, "dasd")) {
> +        ret = udevProcessDasd(device, def);
>      } else {
>          VIR_DEBUG("Unsupported storage type '%s'",
>                    def->caps->data.storage.drive_type);

The rest looks good:
Reviewed-by: Erik Skultety <eskultet at redhat.com>




More information about the libvir-list mailing list