[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] race with restart and device removal
We've observed that sometimes during restart some of a domain's vbds failed to be created. From some debugging it appears to be this code: # Marshall devices (running or from configuration) if not ignore_devices: for cls in XendDevices.valid_devices(): found = False # figure if there is a device that is running if domain: try: controller = domain.getDeviceController(cls) configs = controller.configurations() for config in configs: sxpr.append(['device', config]) found = True except: log.exception("dumping sxp from device controllers") pass # if we didn't find that device, check the existing config # for a device in the same class if not found: for dev_type, dev_info in self.all_devices_sxpr(): if dev_type == cls: sxpr.append(['device', dev_info]) 'configs' comes from the xen store: def deviceIDs(self, transaction = None): """@return The IDs of each of the devices currently configured for this instance's deviceClass. """ fe = self.backendRoot() if transaction: return map(lambda x: int(x.split('/')[-1]), transaction.list(fe)) else: return map(int, xstransact.List(fe)) But this can race against the disk backend removing the xenstore entries itself: so we may have removed one device but not the other. I wonder why we're looking at the running devices at all here? What's the best fix? thanks john _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |