All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhigang Wang <zhigang.x.wang@oracle.com>
To: xen-devel@lists.xensource.com
Subject: [PATCH]restore name/uuid uniqueness check
Date: Wed, 23 Jan 2008 14:59:14 +0800	[thread overview]
Message-ID: <4796E5C2.3040107@oracle.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 2498 bytes --]

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


[-- Attachment #2: restore-name-uuid-uniqueness-check.patch --]
[-- Type: text/x-patch, Size: 720 bytes --]

--- 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:

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

             reply	other threads:[~2008-01-23  6:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-23  6:59 Zhigang Wang [this message]
2008-01-23  8:07 ` [PATCH]restore name/uuid uniqueness check Keir Fraser
2008-01-23  8:14   ` Keir Fraser
2008-01-30  6:34     ` Zhigang Wang
2008-01-23 13:50 ` what work does analysis_phase( ) do? tgh

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4796E5C2.3040107@oracle.com \
    --to=zhigang.x.wang@oracle.com \
    --cc=xen-devel@lists.xensource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.