&data);
}
+
+typedef struct _FindMediatedDeviceData FindMediatedDeviceData;
+struct _FindMediatedDeviceData {
+ const char *uuid;
+ const char *parent_addr;
+};
+
+
static int
virNodeDeviceObjListFindMediatedDeviceByUUIDCallback(const void *payload,
const char *name G_GNUC_UNUSED,
const void *opaque)
{
virNodeDeviceObj *obj = (virNodeDeviceObj *) payload;
- const char *uuid = (const char *) opaque;
+ const FindMediatedDeviceData* data = opaque;
virNodeDevCapsDef *cap;
int want = 0;
for (cap = obj->def->caps; cap != NULL; cap = cap->next) {
if (cap->data.type == VIR_NODE_DEV_CAP_MDEV) {
- if (STREQ(cap->data.mdev.uuid, uuid)) {
+ if (STREQ(cap->data.mdev.uuid, data->uuid) &&
+ STREQ(cap->data.mdev.parent_addr, data->parent_addr)) {
want = 1;
break;
}
virNodeDeviceObj *
virNodeDeviceObjListFindMediatedDeviceByUUID(virNodeDeviceObjList *devs,
- const char *uuid)
+ const char *uuid,
+ const char *parent_addr)
{
+ const FindMediatedDeviceData data = {uuid, parent_addr};
return virNodeDeviceObjListSearch(devs,
virNodeDeviceObjListFindMediatedDeviceByUUIDCallback,
- uuid);
+ &data);
}
static void
static virNodeDevicePtr
nodeDeviceLookupMediatedDeviceByUUID(virConnectPtr conn,
const char *uuid,
+ const char *parent_addr,
unsigned int flags)
{
virNodeDeviceObj *obj = NULL;
virCheckFlags(0, NULL);
if (!(obj = virNodeDeviceObjListFindMediatedDeviceByUUID(driver->devs,
- uuid)))
+ uuid, parent_addr)))
return NULL;
def = virNodeDeviceObjGetDef(obj);
}
+typedef struct {
+ const char *uuid;
+ const char *parent_addr;
+} NewMediatedDeviceData;
+
static virNodeDevicePtr
nodeDeviceFindNewMediatedDeviceFunc(virConnectPtr conn,
const void *opaque)
{
- const char *uuid = opaque;
+ const NewMediatedDeviceData *data = opaque;
- return nodeDeviceLookupMediatedDeviceByUUID(conn, uuid, 0);
+ return nodeDeviceLookupMediatedDeviceByUUID(conn, data->uuid, data->parent_addr, 0);
}
static virNodeDevicePtr
nodeDeviceFindNewMediatedDevice(virConnectPtr conn,
- const char *mdev_uuid)
+ const char *mdev_uuid,
+ const char *parent_addr)
{
- return nodeDeviceFindNewDevice(conn,
- nodeDeviceFindNewMediatedDeviceFunc,
- mdev_uuid);
+ NewMediatedDeviceData data = {mdev_uuid, parent_addr};
+ return nodeDeviceFindNewDevice(conn, nodeDeviceFindNewMediatedDeviceFunc,
+ &data);
}
def->caps->data.mdev.uuid = g_steal_pointer(&uuid);
}
- return nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid);
+ return nodeDeviceFindNewMediatedDevice(conn, def->caps->data.mdev.uuid,
+ def->caps->data.mdev.parent_addr);
}