char * nodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags) { virNodeDeviceObjPtr obj; char *ret = NULL; virCheckFlags(0, NULL); nodeDeviceLock(); obj = virNodeDeviceFindByName(&driver->devs, dev->name); nodeDeviceUnlock(); if (!obj) { virReportError(VIR_ERR_NO_NODE_DEVICE, _("no node device with matching name '%s'"), dev->name); goto cleanup; } if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, obj->def) < 0) goto cleanup; update_driver_name(obj); if (update_caps(obj) < 0) goto cleanup; ret = virNodeDeviceDefFormat(obj->def); cleanup: if (obj) virNodeDeviceObjUnlock(obj); return ret; }
static int testCompareXMLToXMLFiles(const char *xml) { char *xmlData = NULL; char *actual = NULL; int ret = -1; virNodeDeviceDefPtr dev = NULL; if (virtTestLoadFile(xml, &xmlData) < 0) goto fail; if (!(dev = virNodeDeviceDefParseString(xmlData, EXISTING_DEVICE, NULL))) goto fail; if (!(actual = virNodeDeviceDefFormat(dev))) goto fail; if (STRNEQ(xmlData, actual)) { virtTestDifferenceFull(stderr, xmlData, xml, actual, NULL); goto fail; } ret = 0; fail: VIR_FREE(xmlData); VIR_FREE(actual); virNodeDeviceDefFree(dev); return ret; }
char * nodeDeviceGetXMLDesc(virNodeDevicePtr dev, unsigned int flags) { virNodeDeviceObjPtr obj; virNodeDeviceDefPtr def; char *ret = NULL; virCheckFlags(0, NULL); if (!(obj = nodeDeviceObjFindByName(dev->name))) return NULL; def = virNodeDeviceObjGetDef(obj); if (virNodeDeviceGetXMLDescEnsureACL(dev->conn, def) < 0) goto cleanup; if (nodeDeviceUpdateDriverName(def) < 0) goto cleanup; if (nodeDeviceUpdateCaps(def) < 0) goto cleanup; ret = virNodeDeviceDefFormat(def); cleanup: virNodeDeviceObjUnlock(obj); return ret; }
static char *nodeDeviceDumpXML(virNodeDevicePtr dev, unsigned int flags ATTRIBUTE_UNUSED) { virDeviceMonitorStatePtr driver = dev->conn->devMonPrivateData; virNodeDeviceObjPtr obj; char *ret = NULL; nodeDeviceLock(driver); obj = virNodeDeviceFindByName(&driver->devs, dev->name); nodeDeviceUnlock(driver); if (!obj) { virNodeDeviceReportError(VIR_ERR_NO_NODE_DEVICE, _("no node device with matching name '%s'"), dev->name); goto cleanup; } update_driver_name(obj); update_caps(obj); ret = virNodeDeviceDefFormat(obj->def); cleanup: if (obj) virNodeDeviceObjUnlock(obj); return ret; }
static int testCompareXMLToXMLFiles(const char *xml) { char *xmlData = NULL; char *actual = NULL; int ret = -1; virNodeDeviceDefPtr dev = NULL; virNodeDevCapsDefPtr caps; if (virTestLoadFile(xml, &xmlData) < 0) goto fail; if (!(dev = virNodeDeviceDefParseString(xmlData, EXISTING_DEVICE, NULL))) goto fail; /* Calculate some things that are not read in */ for (caps = dev->caps; caps; caps = caps->next) { virNodeDevCapDataPtr data = &caps->data; if (caps->data.type == VIR_NODE_DEV_CAP_STORAGE) { if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE) { if (data->storage.flags & VIR_NODE_DEV_CAP_STORAGE_REMOVABLE_MEDIA_AVAILABLE) { data->storage.logical_block_size = 2048; data->storage.num_blocks = data->storage.removable_media_size / data->storage.logical_block_size; } } else { data->storage.logical_block_size = 512; data->storage.num_blocks = data->storage.size / data->storage.logical_block_size; } } } if (!(actual = virNodeDeviceDefFormat(dev))) goto fail; if (STRNEQ(xmlData, actual)) { virTestDifferenceFull(stderr, xmlData, xml, actual, NULL); goto fail; } ret = 0; fail: VIR_FREE(xmlData); VIR_FREE(actual); virNodeDeviceDefFree(dev); return ret; }