This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] Problem starting stubdoms past a domid of 257 + fix

To: <xen-devel@xxxxxxxxxxxxxxxxxxx>, "Keir Fraser" <keir.fraser@xxxxxxxxxx>
Subject: [Xen-devel] Problem starting stubdoms past a domid of 257 + fix
From: "John Weekes" <lists.xen@xxxxxxxxxxxxxxxxxx>
Date: Fri, 14 May 2010 15:02:04 -0700
Delivery-date: Fri, 14 May 2010 15:07:09 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
Importance: Normal
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
I'm running Xen 4.0.1-rc1-pre (21122:7d1d4abd8b44). In this version, and in all other Xen 3.5-unstable + versions that I've looked at, is this function in XendDomainInfo.py:
    def getStubdomDomid(self):
        dom_list = xstransact.List('/local/domain')
        for d in dom_list:
            target = xstransact.Read('/local/domain/' + d + '/target')
            if target is not None and int(target) is self.domid :
                return int(d)
        return None
The bolded line has a bug in it, unfortunately. This function is used in domain destruction, and destruction works properly when a domain has a stubdom, but only until it reaches a domid of around 257. Past that, it breaks. This can be easily seen by simply starting a bunch of HVMs with stubdoms (I tested by creating + destroying the same one, over and over).
What's interesting is that the function works at all -- "is" really does not seem to be the right comparator to use here.
The fix is to change that line to read:
            if target is not None and int(target) == self.domid :
I have patched all of my existing Xen installs, and tested the fix. This might make a good candidate for inclusion in 4.0.1, as well as xen-unstable (if it has the same piece of code).
-John Weekes
Xen-devel mailing list
<Prev in Thread] Current Thread [Next in Thread>