Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
DISCONTINUED:openSUSE:11.1:Update
xen
18885-bootable-flag.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 18885-bootable-flag.patch of Package xen
# HG changeset patch # User Keir Fraser <keir.fraser@citrix.com> # Date 1228826745 0 # Node ID c0c113ab0be528f56aec2854c544535a4245853e # Parent b1b9cf7a2d36706e7dbbed275327095a293a3b33 xend: Remember bootable flag for vbds in xenstore When xend is restarted, bootable flags of all disk devices are lost and then the first disk is marked as bootable by a "compatibility hack". When a guest domain is created with a mixture of several vbd and tap devices, the compatibility hack may fail to choose the right bootable device. Thus preventing the guest to be restarted. This patch fixes this behavior by remembering bootable flag for each disk device in xenstore database. Signed-off-by: Jiri Denemark <jdenemar@redhat.com> Index: xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/XendConfig.py +++ xen-3.3.1-testing/tools/python/xen/xend/XendConfig.py @@ -1260,7 +1260,6 @@ class XendConfig(dict): pass if dev_type == 'vbd': - dev_info['bootable'] = 0 if dev_info.get('dev', '').startswith('ioemu:'): dev_info['driver'] = 'ioemu' else: @@ -1296,7 +1295,7 @@ class XendConfig(dict): if param not in target: target[param] = [] if dev_uuid not in target[param]: - if dev_type == 'vbd': + if dev_type == 'vbd' and 'bootable' not in dev_info: # Compat hack -- mark first disk bootable dev_info['bootable'] = int(not target[param]) target[param].append(dev_uuid) @@ -1304,8 +1303,9 @@ class XendConfig(dict): if 'vbd_refs' not in target: target['vbd_refs'] = [] if dev_uuid not in target['vbd_refs']: - # Compat hack -- mark first disk bootable - dev_info['bootable'] = int(not target['vbd_refs']) + if 'bootable' not in dev_info: + # Compat hack -- mark first disk bootable + dev_info['bootable'] = int(not target['vbd_refs']) target['vbd_refs'].append(dev_uuid) elif dev_type == 'vfb': Index: xen-3.3.1-testing/tools/python/xen/xend/server/blkif.py =================================================================== --- xen-3.3.1-testing.orig/tools/python/xen/xend/server/blkif.py +++ xen-3.3.1-testing/tools/python/xen/xend/server/blkif.py @@ -78,6 +78,10 @@ class BlkifController(DevController): if uuid: back['uuid'] = uuid + bootable = config.get('bootable', None) + if bootable != None: + back['bootable'] = str(bootable) + if security.on() == xsconstants.XS_POLICY_ACM: self.do_access_control(config, uname) @@ -143,11 +147,12 @@ class BlkifController(DevController): config = DevController.getDeviceConfiguration(self, devid, transaction) if transaction is None: devinfo = self.readBackend(devid, 'dev', 'type', 'params', 'mode', - 'uuid') + 'uuid', 'bootable') else: devinfo = self.readBackendTxn(transaction, devid, - 'dev', 'type', 'params', 'mode', 'uuid') - dev, typ, params, mode, uuid = devinfo + 'dev', 'type', 'params', 'mode', 'uuid', + 'bootable') + dev, typ, params, mode, uuid, bootable = devinfo if dev: if transaction is None: @@ -165,6 +170,8 @@ class BlkifController(DevController): config['mode'] = mode if uuid: config['uuid'] = uuid + if bootable != None: + config['bootable'] = int(bootable) proto = self.readFrontend(devid, 'protocol') if proto:
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor