[Users] Ovirt - double use of PCI Address

Oved Ourfalli ovedo at redhat.com
Wed Jun 6 07:20:16 UTC 2012


Fix is now merged upstream:
http://gerrit.ovirt.org/gitweb?p=ovirt-engine.git;a=commit;h=242636a161a1f7ee44bfad2f9a80002b589b685e

I verified it on my environment, testing both snapshots and pools.

I guess that old VMs you have, that are part of a pool, or were restored from snapshots, can be damaged (as not only the monitors were duplicated, but all the other devices as well, besides disks).

Thank you for helping us find the problem,
Oved

----- Original Message -----
> From: "Yair Zaslavsky" <yzaslavs at redhat.com>
> To: users at ovirt.org
> Cc: "mohsen saeedi" <mohsen.saeedi at gmail.com>, "Oved Ourfalli" <oourfali at redhat.com>
> Sent: Tuesday, June 5, 2012 7:16:12 PM
> Subject: Re: [Users] Ovirt - double use of PCI Address
> 
> On 06/05/2012 06:46 PM, Oved Ourfalli wrote:
> > I think that the problem is related to snapshots.
> > I saw that when working with a VM pool, defining some pre-started
> > VMs, then when shutting down a VM then all the devices are created
> > again, which leads to these duplications.
> > Still need to investigate/debug it, on a clean environment, but
> > looks like it is the issue.
> 
> > 
> > Oved
> I would also like to add that maybe its worth to get the XML of the
> configuration of the snapshot.
> This information is stored as "text" under the vm_configuration
> column
> of "snapshots" table.
> You will always have an "active" snapshot - this is not the snapshot
> you're interested at, simply query the snapshots table according to
> the
> snapshot description, and you will have the OVF that describes the VM
> when the snapshot was created.
> I wonder if the OVF is correctly kept at the snapshot (just
> suggesting
> another point of investigation)
> 
> Yair
> 
> 
> 
> > 
> > ----- Original Message -----
> >> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com>
> >> To: "Oved Ourfalli" <ovedo at redhat.com>
> >> Cc: users at ovirt.org, "Igor Lvovsky" <ilvovsky at redhat.com>
> >> Sent: Tuesday, June 5, 2012 6:34:18 PM
> >> Subject: Re: [Users] Ovirt - double use of PCI Address
> >>
> >>
> >>
> >>
> >>
> >> Ok. thanks. I'm trying to do all of the under my home server with
> >> Ovirt. I'll update you about any problem in this case.
> >>
> >>
> >>
> >> Oved Ourfalli <ovedo at redhat.com> wrote on Tue, 05 Jun 2012
> >> 11:20:03
> >> -0400 (EDT):
> >>
> >> ----- Original Message -----
> >>
> >> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com> To: "Oved
> >> Ourfalli"
> >> <ovedo at redhat.com> Cc: users at ovirt.org , "Igor Lvovsky"
> >> <ilvovsky at redhat.com> Sent: Tuesday, June 5, 2012 6:10:30 PM
> >> Subject: Re: [Users] Ovirt - double use of PCI Address
> >>
> >>
> >>
> >>
> >>
> >> Hi Again
> >>
> >> I just defined new server on Ovirt admin portal. I think define
> >> monitor is for desktop virtualization. is it true?
> >>
> >> I switched more than two time between spice and vnc. do you think
> >> switching between vnc and spice is the reason for this problem?
> >> And
> >> did the problem occur?
> >> Trying to reproduce it now and I can't, although I seem to have
> >> some
> >> VMs with more than one monitor in the vm_device table, but all
> >> have
> >> this property set to 1.
> >> I'll update you in case I understand the reason. If you have a
> >> solid
> >> reproduction then please share it.
> >>
> >> Thank you,
> >> Oved
> >>
> >> I'm going to delete extra video card. but it's very interesting
> >> for
> >> me to know about reason of this problem.
> >>
> >>
> >>
> >>
> >> Thanks
> >>
> >> Oved Ourfalli <ovedo at redhat.com> wrote on Tue, 05 Jun 2012
> >> 10:16:07
> >> -0400 (EDT):
> >>
> >> ----- Original Message -----
> >>
> >> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com> To: "Oved
> >> Ourfalli"
> >> <ovedo at redhat.com> Cc: users at ovirt.org , "Igor Lvovsky"
> >> <ilvovsky at redhat.com> Sent: Tuesday, June 5, 2012 5:06:55 PM
> >> Subject: Re: [Users] Ovirt - double use of PCI Address
> >>
> >>
> >>
> >>
> >>
> >> Thanks. But i didn't add 3 video card! why there is 3 video
> >> card?is
> >> it bug? Basically the number of devices should grow or shrink,
> >> according to the number of monitors you choose in the VM
> >> properties.
> >> If it has more then it is a bug.
> >> I'll take a look at it.
> >>
> >> can you please explain more about how can i fix this problem? i
> >> must
> >> go to the database and then i leave the address as is? i don't
> >> understand last your sentence.
> >> Thanks for you attention. Thinking of it, if you don't want 3
> >> devices
> >> you can just delete two of the three video controllers in order to
> >> workaround the issue.
> >> In order to do that you'll have to do the following in the
> >> database:
> >> 1. Find the vm_id of your VM. You can do that by looking at the
> >> vm_static table.
> >> 2. Then, in the vm_device table, find the video devices.
> >> 3. Delete two of the three devices.
> >>
> >> Let me know if you need more help.
> >>
> >> Oved Ourfalli <ovedo at redhat.com> wrote on Tue, 05 Jun 2012
> >> 10:01:00
> >> -0400 (EDT):
> >>
> >> ----- Original Message -----
> >>
> >> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com> To: "Oved
> >> Ourfalli"
> >> <ovedo at redhat.com> Cc: users at ovirt.org Sent: Tuesday, June 5, 2012
> >> 4:42:09 PM
> >> Subject: Re: [Users] Ovirt - double use of PCI Address
> >>
> >>
> >>
> >> /*Oved Ourfalli <ovedo at redhat.com> */ wrote on Tue, 05 Jun 2012
> >> 09:29:19
> >> -0400 (EDT):
> >>
> >> ----- Original Message -----
> >>
> >> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com> To:
> >> users at ovirt.org
> >> Sent: Tuesday, June 5, 2012 4:24:46 PM
> >> Subject: [Users] Ovirt - double use of PCI Address
> >>
> >>
> >>
> >>
> >>
> >> Hi
> >>
> >> I setup ovirt and some other things. I make a virtual machine
> >> (CentOS
> >> 6.2). installed and configured it. then power off it and make a
> >> snapshot and create clone image from it.
> >>
> >> when i trying to start new machine, i got this error:
> >>
> >> 2012-06-05 13:16:15.433+0000: 2375: error :
> >> qemuCollectPCIAddress:743
> >> : XML error: Attempted double use of PCI Address '0:0:2.0'
> >>
> >> I remove the new machine and try to start old machine. i get the
> >> error again! and i'm enable to start old machine. Can you please
> >> attach the engine.log and vdsm.log files? Yes, I attached both of
> >> them.
> >>
> >> Are you working with the most updated upstream code? I'm working
> >> with
> >> build from git -
> >> faef6297b0d01203e88040b2707f9abfbd754d3f. more information is
> >> available
> >> here: http://www.dreyou.org/ovirt/ You can see the issue in
> >> vdsm.log
> >> file. You have 3 video cards, all on the same address.
> >>
> >> 		<video>
> >> 			<address  domain="0x0000"  function="0x0"  slot="0x02"
> >> 			 type="pci"
> >> 			bus="0x00"/>
> >> 			<model heads="1" type="qxl" vram="65536"/>
> >> 		</video>
> >> 		<video>
> >> 			<address  domain="0x0000"  function="0x0"  slot="0x02"
> >> 			 type="pci"
> >> 			bus="0x00"/>
> >> 			<model heads="1" type="qxl" vram="65536"/>
> >> 		</video>
> >> 		<video>
> >> 			<address  domain="0x0000"  function="0x0"  slot="0x02"
> >> 			 type="pci"
> >> 			bus="0x00"/>
> >> 			<model heads="1" type="qxl" vram="65536"/>
> >> 		</video>
> >>
> >> Looking at the vdsm code (in vdsm/libvirtvm.py), you can see why
> >> such
> >> a thing might happen (also look at the FIXME comment :-) ).
> >>
> >>             # FIXME. We have an identification problem here.
> >>             # Video card device has not unique identifier, except
> >>             the
> >>             alias
> >>             # (but backend not aware to device's aliases).
> >>             # So, for now we can only assign the address according
> >>             to
> >>             devices order.
> >>             for vc in self._devices[vm.VIDEO_DEVICES]:
> >>                 if not hasattr(vc, 'address') or not hasattr(vc,
> >>                 'alias'):
> >>                     vc.alias = alias
> >>                     vc.address = address
> >>                     break
> >>             # Update vm's conf with address
> >>             for dev in self.conf['devices']:
> >>                 if (dev['type'] == vm.VIDEO_DEVICES) and \
> >>                    (not dev.get('address') or not
> >>                    dev.get('alias')):
> >>                     dev['address'] = address
> >>                     dev['alias'] = alias
> >>                     break
> >>
> >> The code above is responsible to return the engine core the device
> >> addresses, after libvirt executes the VM, so that they will be
> >> persistent, and used in future executions of the VM.
> >>
> >> Now, the engine core is aware of the alias (as of the exact commit
> >> you used :-) ), but the first time you run the VM, you can get the
> >> addresses wrong, as the alias isn't taken into account.
> >>
> >> Would you like to try to fix this issue? The fix will be to make a
> >> better logic in the code above. Similar examples can be found in
> >> this file, for example in the section that does the same for
> >> controllers.
> >>
> >> If not, let me know and I'll go ahead and fix that.
> >>
> >> In the meantime, you can workaround this issue by going to the
> >> vm_device table, identifying these three devices, leave the
> >> address
> >> as is for the first video card of your VM (you probably have
> >> video0/1/2 as aliases), and try to run the VM again.
> >> Now, the engine will pass the one with the correct address as the
> >> first, and libvirt will allocate the right addresses to the other
> >> two.
> >> Hopefully this will be enough.
> >>
> >> Oved
> >>
> >>
> >>
> >> We had an issue with the monitors, in which the order of the
> >> monitor devices is important, as the first one needs to get the
> >> address 0:0:2.0, but that issue was fixed.
> >> Are you using more than one monitor? No, I'm using spice or vnc
> >> just
> >> for getting graphic.
> >>
> >> The vdsm.log fill will help a lot here, as it contains the VM's
> >> domain XML file, which will show us all the devices we send
> >> libvirt, and all the addresses that the engine expects to get from
> >> it.
> >>
> >> Any idea?
> >>
> >> Thanks.
> >>
> >>
> >> _______________________________________________
> >> Users mailing list Users at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/users
> >> _______________________________________________
> >> Users mailing list Users at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/users
> >> _______________________________________________
> >> Users mailing list Users at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/users
> >> _______________________________________________
> >> Users mailing list Users at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/users
> >> _______________________________________________
> >> Users mailing list
> >> Users at ovirt.org
> >> http://lists.ovirt.org/mailman/listinfo/users
> >>
> > _______________________________________________
> > Users mailing list
> > Users at ovirt.org
> > http://lists.ovirt.org/mailman/listinfo/users
> 
> 



More information about the Users mailing list