# HG changeset patch
# User Keir Fraser <keir@xxxxxxxxxxxxx>
# Date 1190730917 -3600
# Node ID 265950e3df692730b89411aff6fbb1e2a017a192
# Parent f60b9feb5d755d5e53f11587ef6eaa554cc6c4ab
xend: Fix VIF MAC address being lost across localhost migration.
VIF details in /vm/<uuid> directory in xenstore get deleted by old
domain dying.
Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
tools/python/xen/xend/XendDomainInfo.py | 20 +++++++++++++++++---
1 files changed, 17 insertions(+), 3 deletions(-)
diff -r f60b9feb5d75 -r 265950e3df69 tools/python/xen/xend/XendDomainInfo.py
--- a/tools/python/xen/xend/XendDomainInfo.py Tue Sep 25 10:40:38 2007 +0100
+++ b/tools/python/xen/xend/XendDomainInfo.py Tue Sep 25 15:35:17 2007 +0100
@@ -174,7 +174,8 @@ def recreate(info, priv):
except XendError:
pass # our best shot at 'goto' in python :)
- vm = XendDomainInfo(xeninfo, domid, dompath, augment = True, priv = priv)
+ vm = XendDomainInfo(xeninfo, domid, dompath, augment = True, priv = priv,
+ vmpath = vmpath)
if needs_reinitialising:
vm._recreateDom()
@@ -321,7 +322,7 @@ class XendDomainInfo:
"""
def __init__(self, info, domid = None, dompath = None, augment = False,
- priv = False, resume = False):
+ priv = False, resume = False, vmpath = None):
"""Constructor for a domain
@param info: parsed configuration
@@ -348,7 +349,20 @@ class XendDomainInfo:
#if not self._infoIsSet('uuid'):
# self.info['uuid'] = uuid.toString(uuid.create())
- self.vmpath = XS_VMROOT + self.info['uuid']
+ # Find a unique /vm/<uuid>/<integer> path if not specified.
+ # This avoids conflict between pre-/post-migrate domains when doing
+ # localhost relocation.
+ self.vmpath = vmpath
+ i = 0
+ while self.vmpath == None:
+ self.vmpath = XS_VMROOT + self.info['uuid'] + '/' + str(i)
+ try:
+ if self._readVm("uuid"):
+ self.vmpath = None
+ i = i + 1
+ except:
+ pass
+
self.dompath = dompath
self.image = None
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|