break;
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
- if ((scsi = virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ if ((scsi = virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
virBuffer buf = VIR_BUFFER_INITIALIZER;
char *sg = NULL;
- sg = (callbacks->qemuGetSCSIDeviceSgName)(dev->source.subsys.u.scsi.adapter,
+ sg = (callbacks->qemuGetSCSIDeviceSgName)(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit);
typedef struct _qemuBuildCommandLineCallbacks qemuBuildCommandLineCallbacks;
typedef qemuBuildCommandLineCallbacks *qemuBuildCommandLineCallbacksPtr;
struct _qemuBuildCommandLineCallbacks {
- char * (*qemuGetSCSIDeviceSgName) (const char *adapter,
+ char * (*qemuGetSCSIDeviceSgName) (const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit);
} else if (dev->type == VIR_DOMAIN_DEVICE_HOSTDEV) {
hostdev = dev->data.hostdev;
- if (!(hostdev_name = virSCSIDeviceGetDevName(hostdev->source.subsys.u.scsi.adapter,
+ if (!(hostdev_name = virSCSIDeviceGetDevName(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit)))
if (!(key = qemuGetSharedDeviceKey(disk->src)))
goto cleanup;
} else {
- if (!(dev_name = virSCSIDeviceGetDevName(hostdev->source.subsys.u.scsi.adapter,
+ if (!(dev_name = virSCSIDeviceGetDevName(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit)))
if (!(key = qemuGetSharedDeviceKey(disk->src)))
goto cleanup;
} else {
- if (!(dev_name = virSCSIDeviceGetDevName(hostdev->source.subsys.u.scsi.adapter,
+ if (!(dev_name = virSCSIDeviceGetDevName(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit)))
hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI))
return 0;
- if (!(hostdev_name = virSCSIDeviceGetDevName(hostdev->source.subsys.u.scsi.adapter,
+ if (!(hostdev_name = virSCSIDeviceGetDevName(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit)))
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
continue;
- if (!(scsi = virSCSIDeviceNew(hostdev->source.subsys.u.scsi.adapter,
+ if (!(scsi = virSCSIDeviceNew(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit,
goto cleanup;
}
- if (!(scsi = virSCSIDeviceNew(hostdev->source.subsys.u.scsi.adapter,
+ if (!(scsi = virSCSIDeviceNew(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit,
hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI)
continue;
- if (!(scsi = virSCSIDeviceNew(hostdev->source.subsys.u.scsi.adapter,
+ if (!(scsi = virSCSIDeviceNew(NULL,
+ hostdev->source.subsys.u.scsi.adapter,
hostdev->source.subsys.u.scsi.bus,
hostdev->source.subsys.u.scsi.target,
hostdev->source.subsys.u.scsi.unit,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: {
virSCSIDevicePtr scsi =
- virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: {
virSCSIDevicePtr scsi =
- virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: {
virSCSIDevicePtr scsi =
- virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: {
virSCSIDevicePtr scsi =
- virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI: {
virSCSIDevicePtr scsi =
- virSCSIDeviceNew(dev->source.subsys.u.scsi.adapter,
+ virSCSIDeviceNew(NULL,
+ dev->source.subsys.u.scsi.adapter,
dev->source.subsys.u.scsi.bus,
dev->source.subsys.u.scsi.target,
dev->source.subsys.u.scsi.unit,
}
char *
-virSCSIDeviceGetSgName(const char *adapter,
+virSCSIDeviceGetSgName(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit)
char *path = NULL;
char *sg = NULL;
unsigned int adapter_id;
+ const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_DEVICES;
if (virSCSIDeviceGetAdapterId(adapter, &adapter_id) < 0)
return NULL;
if (virAsprintf(&path,
- SYSFS_SCSI_DEVICES "/%d:%d:%d:%d/scsi_generic",
- adapter_id, bus, target, unit) < 0)
+ "%s/%d:%d:%d:%d/scsi_generic",
+ prefix, adapter_id, bus, target, unit) < 0)
return NULL;
if (!(dir = opendir(path))) {
* on failure.
*/
char *
-virSCSIDeviceGetDevName(const char *adapter,
+virSCSIDeviceGetDevName(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit)
char *path = NULL;
char *name = NULL;
unsigned int adapter_id;
+ const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_DEVICES;
if (virSCSIDeviceGetAdapterId(adapter, &adapter_id) < 0)
return NULL;
if (virAsprintf(&path,
- SYSFS_SCSI_DEVICES "/%d:%d:%d:%d/block",
- adapter_id, bus, target, unit) < 0)
+ "%s/%d:%d:%d:%d/block",
+ prefix, adapter_id, bus, target, unit) < 0)
return NULL;
if (!(dir = opendir(path))) {
}
virSCSIDevicePtr
-virSCSIDeviceNew(const char *adapter,
+virSCSIDeviceNew(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit,
char *model_path = NULL;
char *vendor = NULL;
char *model = NULL;
+ const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_DEVICES;
if (VIR_ALLOC(dev) < 0)
return NULL;
dev->readonly = readonly;
dev->shareable = shareable;
- if (!(sg = virSCSIDeviceGetSgName(adapter, bus, target, unit)))
+ if (!(sg = virSCSIDeviceGetSgName(prefix, adapter, bus, target, unit)))
goto cleanup;
if (virSCSIDeviceGetAdapterId(adapter, &dev->adapter) < 0)
}
if (virAsprintf(&vendor_path,
- SYSFS_SCSI_DEVICES "/%s/vendor", dev->name) < 0 ||
+ "%s/%s/vendor", prefix, dev->name) < 0 ||
virAsprintf(&model_path,
- SYSFS_SCSI_DEVICES "/%s/model", dev->name) < 0)
+ "%s/%s/model", prefix, dev->name) < 0)
goto cleanup;
if (virFileReadAll(vendor_path, 1024, &vendor) < 0)
typedef struct _virSCSIDeviceList virSCSIDeviceList;
typedef virSCSIDeviceList *virSCSIDeviceListPtr;
-char *virSCSIDeviceGetSgName(const char *adapter,
+char *virSCSIDeviceGetSgName(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit);
-char *virSCSIDeviceGetDevName(const char *adapter,
+char *virSCSIDeviceGetDevName(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit);
-virSCSIDevicePtr virSCSIDeviceNew(const char *adapter,
+virSCSIDevicePtr virSCSIDeviceNew(const char *sysfs_prefix,
+ const char *adapter,
unsigned int bus,
unsigned int target,
unsigned int unit,
static char *
-testSCSIDeviceGetSgName(const char *adapter ATTRIBUTE_UNUSED,
+testSCSIDeviceGetSgName(const char *sysfs_prefix ATTRIBUTE_UNUSED,
+ const char *adapter ATTRIBUTE_UNUSED,
unsigned int bus ATTRIBUTE_UNUSED,
unsigned int target ATTRIBUTE_UNUSED,
unsigned int unit ATTRIBUTE_UNUSED)