#include "virstring.h"
#include "viraccessapicheck.h"
#include "viraccessapichecklxc.h"
+#include "virhostdev.h"
#define VIR_FROM_THIS VIR_FROM_LXC
if (!(lxc_driver->securityManager = lxcSecurityInit(cfg)))
goto cleanup;
- if ((lxc_driver->activeUsbHostdevs = virUSBDeviceListNew()) == NULL)
+ if (!(lxc_driver->hostdevMgr = virHostdevManagerGetDefault()))
goto cleanup;
if ((virLXCDriverGetCapabilities(lxc_driver, true)) == NULL)
virSysinfoDefFree(lxc_driver->hostsysinfo);
- virObjectUnref(lxc_driver->activeUsbHostdevs);
+ virObjectUnref(lxc_driver->hostdevMgr);
virObjectUnref(lxc_driver->caps);
virObjectUnref(lxc_driver->securityManager);
virObjectUnref(lxc_driver->xmlopt);
int idx, ret = -1;
char *dst = NULL;
virUSBDevicePtr usb = NULL;
+ virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
if ((idx = virDomainHostdevFind(vm->def,
dev->data.hostdev,
VIR_WARN("cannot deny device %s for domain %s",
dst, vm->def->name);
- virObjectLock(driver->activeUsbHostdevs);
- virUSBDeviceListDel(driver->activeUsbHostdevs, usb);
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectLock(hostdev_mgr->activeUsbHostdevs);
+ virUSBDeviceListDel(hostdev_mgr->activeUsbHostdevs, usb);
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
virDomainHostdevRemove(vm->def, idx);
virDomainHostdevDefFree(def);
#include "viralloc.h"
#include "virlog.h"
#include "virerror.h"
+#include "virhostdev.h"
#define VIR_FROM_THIS VIR_FROM_LXC
{
virDomainHostdevDefPtr hostdev = NULL;
size_t i;
+ virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
if (!def->nhostdevs)
return 0;
virUSBDeviceSetUsedBy(usb, LXC_DRIVER_NAME, def->name);
- virObjectLock(driver->activeUsbHostdevs);
- if (virUSBDeviceListAdd(driver->activeUsbHostdevs, usb) < 0) {
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectLock(hostdev_mgr->activeUsbHostdevs);
+ if (virUSBDeviceListAdd(hostdev_mgr->activeUsbHostdevs, usb) < 0) {
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
virUSBDeviceFree(usb);
return -1;
}
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
}
return 0;
size_t i, j;
unsigned int count;
virUSBDevicePtr tmp;
+ virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
count = virUSBDeviceListCount(list);
- virObjectLock(driver->activeUsbHostdevs);
+ virObjectLock(hostdev_mgr->activeUsbHostdevs);
for (i = 0; i < count; i++) {
virUSBDevicePtr usb = virUSBDeviceListGet(list, i);
- if ((tmp = virUSBDeviceListFind(driver->activeUsbHostdevs, usb))) {
+ if ((tmp = virUSBDeviceListFind(hostdev_mgr->activeUsbHostdevs, usb))) {
const char *other_drvname;
const char *other_domname;
* from the virUSBDeviceList that passed in on success,
* perform rollback on failure.
*/
- if (virUSBDeviceListAdd(driver->activeUsbHostdevs, usb) < 0)
+ if (virUSBDeviceListAdd(hostdev_mgr->activeUsbHostdevs, usb) < 0)
goto error;
}
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
return 0;
error:
for (j = 0; j < i; j++) {
tmp = virUSBDeviceListGet(list, i);
- virUSBDeviceListSteal(driver->activeUsbHostdevs, tmp);
+ virUSBDeviceListSteal(hostdev_mgr->activeUsbHostdevs, tmp);
}
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
return -1;
}
int nhostdevs)
{
size_t i;
+ virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
- virObjectLock(driver->activeUsbHostdevs);
+ virObjectLock(hostdev_mgr->activeUsbHostdevs);
for (i = 0; i < nhostdevs; i++) {
virDomainHostdevDefPtr hostdev = hostdevs[i];
virUSBDevicePtr usb, tmp;
* Therefore we want to steal only those devices from
* the list which were taken by @name */
- tmp = virUSBDeviceListFind(driver->activeUsbHostdevs, usb);
+ tmp = virUSBDeviceListFind(hostdev_mgr->activeUsbHostdevs, usb);
virUSBDeviceFree(usb);
if (!tmp) {
hostdev->source.subsys.u.usb.device,
name);
- virUSBDeviceListDel(driver->activeUsbHostdevs, tmp);
+ virUSBDeviceListDel(hostdev_mgr->activeUsbHostdevs, tmp);
}
}
- virObjectUnlock(driver->activeUsbHostdevs);
+ virObjectUnlock(hostdev_mgr->activeUsbHostdevs);
}
void virLXCDomainReAttachHostDevices(virLXCDriverPtr driver,