mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 03:12:22 +00:00
node_device: detect DASD devices
Make Direct Access Storage Devices (DASDs) available in the node_device driver. Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com> Reviewed-by: Erik Skultety <eskultet@redhat.com> Signed-off-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
This commit is contained in:
parent
ab655afa18
commit
33bbf589dd
@ -871,6 +871,19 @@ udevProcessSD(struct udev_device *device,
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
udevProcessDASD(struct udev_device *device,
|
||||
virNodeDeviceDefPtr def)
|
||||
{
|
||||
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,19 @@ udevKludgeStorageType(virNodeDeviceDefPtr def)
|
||||
def->sysfs_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* For Direct Access Storage Devices (DASDs) there are
|
||||
* currently no identifiers in udev besides ID_PATH. Since
|
||||
* ID_TYPE=disk does not exist on DASDs they fall through
|
||||
* the udevProcessStorage detection logic. */
|
||||
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);
|
||||
return 0;
|
||||
}
|
||||
VIR_DEBUG("Could not determine storage type "
|
||||
"for device with sysfs path '%s'", def->sysfs_path);
|
||||
return -1;
|
||||
@ -978,6 +1004,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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user