Index: xen-4.4.0-testing/tools/python/xen/xend/XendDomainInfo.py =================================================================== --- xen-4.4.0-testing.orig/tools/python/xen/xend/XendDomainInfo.py +++ xen-4.4.0-testing/tools/python/xen/xend/XendDomainInfo.py @@ -1300,8 +1300,15 @@ class XendDomainInfo: frontpath = self.getDeviceController(deviceClass).frontendPath(dev) backpath = xstransact.Read(frontpath, "backend") thread.start_new_thread(self.getDeviceController(deviceClass).finishDeviceCleanup, (backpath, path)) - - rc = self.getDeviceController(deviceClass).destroyDevice(devid, force) + if deviceClass =='vusb': + dev = self.getDeviceController(deviceClass).convertToDeviceNumber(devid) + state = self.getDeviceController(deviceClass).readBackend(dev, 'state') + if state == '1': + rc = self.getDeviceController(deviceClass).destroyDevice(devid, True) + else: + rc = self.getDeviceController(deviceClass).destroyDevice(devid, force) + else: + rc = self.getDeviceController(deviceClass).destroyDevice(devid, force) if not force and rm_cfg: # The backend path, other than the device itself, # has to be passed because its accompanied frontend