[Xen-devel] Re: [Xen-changelog] [xen-unstable] xend: pass-through: devic
On Wed, Jul 29, 2009 at 10:57:40AM +0800, Cui, Dexuan wrote:
> Hi Tom and Simon,
> The patch looks like a workaround to me.
> Could you please explain under what condition the state may be null?
> On my host I don't meet with the issue, but I did hear the same issue on
> some host and I would look into it when the host is available for me.
I agree that this looks a lot like a work-around. I was initially very
reluctant to apply it. And I would still be very happy if someone could
find a better solution. My analysis of the problem is as follows:
What I now think is happening is that for some reason on your system
when _createDevices() initialises the devices in xenstore using
_createDevice() then end up with no state entry. Whereas on my system
then end up with state 3=Initialised.
It seems to me that actually the behaviour of your system is correct and
my system is bogus. I really don't know why that is the case - are you
using the stock xenstore implementation in C, or the Ocaml version?
In any case, it seems to be that your original work-around was more or
less correct. I'll just tweak it a bit to handle the case where
cleanupDevices() is shuffling entries because one or more have been
deleted and repost it.
> -- Dexuan
> -----Original Message-----
> From: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
> [mailto:xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx] On Behalf Of Xen
> Sent: 2009?7?29? 0:11
> To: xen-changelog@xxxxxxxxxxxxxxxxxxx
> Subject: [Xen-changelog] [xen-unstable] xend: pass-through: device state in
> xenstore may be null
> # HG changeset patch
> # User Keir Fraser <keir.fraser@xxxxxxxxxx>
> # Date 1248795146 -3600
> # Node ID 0c7a560822d9d9516dfc83cef6fceec944fd97a8
> # Parent 6120f7a92d82ccb1747feffa1a72eb704e642fb0
> xend: pass-through: device state in xenstore may be null
> Signed-off-by: Tom Rotenberg <tom.rotenberg@xxxxxxxxx>
> tools/python/xen/xend/server/pciif.py | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletion(-)
> diff -r 6120f7a92d82 -r 0c7a560822d9 tools/python/xen/xend/server/pciif.py
> --- a/tools/python/xen/xend/server/pciif.py Tue Jul 28 16:28:21 2009 +0100
> +++ b/tools/python/xen/xend/server/pciif.py Tue Jul 28 16:32:26 2009 +0100
> @@ -489,7 +489,11 @@ class PciController(DevController):
> num_devs = int(self.readBackend(devid, 'num_devs'))
> new_num_devs = 0
> for i in range(num_devs):
> - state = int(self.readBackend(devid, 'state-%i' % i))
> + try:
> + state = int(self.readBackend(devid, 'state-%i' % i))
> + except:
> + state = xenbusState['Unknown']
> if state == xenbusState['Closing']:
> # Detach I/O resources.
> pci_dev = parse_pci_name(self.readBackend(devid, 'dev-%i' %
> Xen-changelog mailing list
Xen-devel mailing list