All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <aliguori@us.ibm.com>
To: Dan Smith <danms@us.ibm.com>
Cc: Xen Tools Developers <xen-tools@lists.xensource.com>,
	Xen Developers <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] Make xend reject duplicates and rename zombies
Date: Thu, 15 Sep 2005 13:54:30 -0500	[thread overview]
Message-ID: <4329C366.2070006@us.ibm.com> (raw)
In-Reply-To: <87br2uz5yj.fsf@us.ibm.com>

I think this is not the right solution to the problem at hand.  The 
problem stems from the fact that xm destroy is just a call to 
xc_domain_destroy which is really just a request to the hypervisor to 
destroy the domain.

Therefore, there is a race condition if you assume that the domain is 
dead after xm destroy returns.  This patch renames the domain name which 
prevents a name class but does not solve the general problem.  Consider, 
for instance, if a domain is using a block device and you do an xm 
destroy.  It is not safe to create a new domain with that same block 
device until you know that the previously mentioned domain is gone.

This patch would allow:

xm destroy xmexample1 && xm create /etc/xen/xmexample1

Even though it might really be conflicting.  This could lead to *very* 
subtle device corruption down the road.

I think the right solution is to make xm destroy not return until the 
domain has actually gone away and add a flag to xm destroy to return 
immediately if that behavior is ever desired.

I'll work up a patch tonight after class.

Regards,

Anthony Liguori

Dan Smith wrote:

>This patch is an update of my previous anti-duplicate-domain patch.
>Now, we check an existing same-name domain to see if it's in the
>"terminated" state, renaming it to "zombie-domid-name" if so.
>
>This basically makes the problem go away for me, as it gives the dying
>domain time to clean itself up.
>
>Test 10_create_fastdestroy from the next release of xm-test validates
>that this fixes the problem.
>
>Signed-off-by: Dan Smith <danms@us.ibm.com>
>
>  
>
>------------------------------------------------------------------------
>
>diff -r c27431cf81f9 tools/python/xen/xend/XendDomain.py
>--- a/tools/python/xen/xend/XendDomain.py	Thu Sep 15 13:17:24 2005
>+++ b/tools/python/xen/xend/XendDomain.py	Thu Sep 15 08:44:22 2005
>@@ -297,6 +297,20 @@
>         @param config: configuration
>         @return: domain
>         """
>+
>+        existing = self.domains.get_by_name(sxp.child_value(config, "name"))
>+        if existing:
>+            if existing.is_terminated():
>+                newname = "zombie-%i-%s" % (existing.domid, existing.name)
>+                log.debug("Renaming zombie domain %s -> %s" %
>+                          (existing.name, newname))
>+                existing.setName(newname)
>+            else:
>+                log.debug("Attempt to create duplicate domain %s" %
>+                          existing.name)
>+                raise XendError("Domain %s already exists as %i!" %
>+                                (existing.name, existing.id))
>+        
>         dominfo = XendDomainInfo.create(self.dbmap, config)
>         return dominfo
> 
>  
>
>------------------------------------------------------------------------
>
>
>  
>
>------------------------------------------------------------------------
>
>_______________________________________________
>Xen-devel mailing list
>Xen-devel@lists.xensource.com
>http://lists.xensource.com/xen-devel
>  
>

  reply	other threads:[~2005-09-15 18:54 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-15 15:49 [PATCH] Make xend reject duplicates and rename zombies Dan Smith
2005-09-15 18:54 ` Anthony Liguori [this message]
2005-09-15 19:16   ` Dan Smith
2005-09-16 14:45     ` Ted Kaczmarek
2005-09-16 19:52   ` [Xen-tools] " Christian Limpach
2005-09-16 21:37     ` Anthony Liguori
2005-09-16 21:48       ` Christian Limpach
2005-09-16 21:49         ` Anthony Liguori
2005-09-16 22:19           ` Christian Limpach

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=4329C366.2070006@us.ibm.com \
    --to=aliguori@us.ibm.com \
    --cc=danms@us.ibm.com \
    --cc=xen-devel@lists.xensource.com \
    --cc=xen-tools@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.