[Users] Ovirt - double use of PCI Address

Oved Ourfalli ovedo at redhat.com
Wed Jun 6 09:03:28 UTC 2012



----- Original Message -----
> From: "Mohsen Saeedi" <mohsen.saeedi at gmail.com>
> To: "Oved Ourfalli" <ovedo at redhat.com>
> Cc: users at ovirt.org, "Yair Zaslavsky" <yzaslavs at redhat.com>
> Sent: Wednesday, June 6, 2012 11:24:14 AM
> Subject: Re: [Users] Ovirt - double use of PCI Address
> 
> 
> 
> 
> Thanks. we should help each other in open source product. I'm trying
> to work with Ovirt everyday and if i find new problem or bug, i'll
> send it to lists.
> 
> I didn't define any pool. as default pool is exist?
> 
No.
But pool uses snapshots for stateless VMs, and that's where I originally reproduced the problem.

> i make snapshot from my VM and then create new clone based on
> snapshot. then i try to start new vm. it failed with double of pci
> address.then i removed new clone VM. then i try to start old VM
> (that i created snapshot from it) . but i saw it failed too!
> 
> then i sent email to this lists and you helped me to solve this
> problem.
> 
> thanks.
> 
> Oved Ourfalli <ovedo at redhat.com> wrote on Wed, 06 Jun 2012 03:20:16
> -0400 (EDT):
> 
> 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