char * nodeDeviceGetParent(virNodeDevicePtr dev) { virNodeDeviceObjPtr obj; char *ret = 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 (virNodeDeviceGetParentEnsureACL(dev->conn, obj->def) < 0) goto cleanup; if (obj->def->parent) { if (VIR_STRDUP(ret, obj->def->parent) < 0) goto cleanup; } else { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no parent for this device")); } cleanup: if (obj) virNodeDeviceObjUnlock(obj); return ret; }
char * nodeDeviceGetParent(virNodeDevicePtr dev) { virNodeDeviceObjPtr obj; virNodeDeviceDefPtr def; char *ret = NULL; if (!(obj = nodeDeviceObjFindByName(dev->name))) return NULL; def = virNodeDeviceObjGetDef(obj); if (virNodeDeviceGetParentEnsureACL(dev->conn, def) < 0) goto cleanup; if (def->parent) { if (VIR_STRDUP(ret, def->parent) < 0) goto cleanup; } else { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("no parent for this device")); } cleanup: virNodeDeviceObjUnlock(obj); return ret; }