From mboxrd@z Thu Jan 1 00:00:00 1970 From: Zhigang Wang Subject: [PATCH]restore name/uuid uniqueness check Date: Wed, 23 Jan 2008 14:59:14 +0800 Message-ID: <4796E5C2.3040107@oracle.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------010002050209030305040807" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------010002050209030305040807 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit hi all, currently, if I restore a vm when the vm is running, it will cause two running vms with the same name/uuid (the second vm is not functional due to disk image in use). # xm create OVM_EL5U1_X86_64_PVM_4GB # xm list Name ID Mem VCPUs State Time(s) Domain-0 0 543 2 r----- 400.1 OVM_EL5U1_X86_64_PVM_4GB 3 128 1 -b---- 14.2 # xm save 3 /tmp/s1 # xm create OVM_EL5U1_X86_64_PVM_4GB # xm restore /tmp/s1 # xm list Name ID Mem VCPUs State Time(s) Domain-0 0 543 2 r----- 411.6 OVM_EL5U1_X86_64_PVM_4GB 4 128 1 -b---- 15.3 OVM_EL5U1_X86_64_PVM_4GB 5 128 1 -b---- 0.7 # xm log --snip-- [2008-01-23 05:13:57 2502] DEBUG (DevController:603) hotplugStatusCallback 5. [2008-01-23 05:13:57 2502] ERROR (XendCheckpoint:286) Device 768 (vbd) could not be connected. File /share/vm/OVM_EL5U1_X86_64_PVM_4GB/system.img is loopback-mounted through /dev/loop0, which is mounted in a guest domain, and so cannot be mounted now. Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/xen/xend/XendCheckpoint.py", line 284, in restore dominfo.waitForDevices() # Wait for backends to set up File "/usr/lib/python2.4/site-packages/xen/xend/XendDomainInfo.py", line 565, in waitForDevices self.getDeviceController(devclass).waitForDevices() File "/usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", line 151, in waitForDevices return map(self.waitForDevice, self.deviceIDs()) File "/usr/lib/python2.4/site-packages/xen/xend/server/DevController.py", line 186, in waitForDevice raise VmError("Device %s (%s) could not be connected.\n%s" % VmError: Device 768 (vbd) could not be connected. File /share/vm/OVM_EL5U1_X86_64_PVM_4GB/system.img is loopback-mounted through /dev/loop0, which is mounted in a guest domain, and so cannot be mounted now. --snip-- if set the disk emulation mode to 'w!', both vms will be functional, but the filesystem will crash soon. local live migration has this issue two. this patch makes name/uuid uniqueness check when restore. but it will disable local migration. please give some advice on resolving this problem while don't break local migration. if cannot find one, I prefer disable local migration. thanks, zhigang --------------010002050209030305040807 Content-Type: text/x-patch; name="restore-name-uuid-uniqueness-check.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="restore-name-uuid-uniqueness-check.patch" --- xen-3.1.2.orig/tools/python/xen/xend/XendCheckpoint.py 2008-01-15 19:19:14.000000000 +0800 +++ xen-3.1.2/tools/python/xen/xend/XendCheckpoint.py 2008-01-22 13:27:21.000000000 +0800 @@ -170,6 +170,13 @@ def restore(xd, fd, dominfo = None, paus vmconfig = p.get_val() + domconfig = XendConfig(sxp_obj = vmconfig) + othervm = xd.domain_lookup_nr(domconfig["name_label"]) + if othervm is None or othervm.domid is None: + othervm = xd.domain_lookup_nr(domconfig["uuid"]) + if othervm is not None and othervm.domid is not None: + raise VmError("Domain '%s' already exists with ID '%d'" % (domconfig["name_label"], othervm.domid)) + if dominfo: dominfo.resume() else: --------------010002050209030305040807 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------010002050209030305040807--