[ovirt-users] qemu cgroup_controllers

Дмитрий Глушенок glush at jet.msk.su
Fri Jun 3 07:05:00 EDT 2016


Thank you Martin!

Actually I tried the workaround hook, provided in [2], but then VDSM (oVirt 3.6.6) tries to interpret hostdev in XML as PCI device, which leads to:

::The vm start process failed
Traceback (most recent call last):
  File "/usr/share/vdsm/virt/vm.py", line 703, in _startUnderlyingVm
    self._run()
  File "/usr/share/vdsm/virt/vm.py", line 1949, in _run
    self._domDependentInit()
  File "/usr/share/vdsm/virt/vm.py", line 1797, in _domDependentInit
    self._getUnderlyingVmDevicesInfo()
  File "/usr/share/vdsm/virt/vm.py", line 1738, in _getUnderlyingVmDevicesInfo
    self._getUnderlyingHostDeviceInfo()
  File "/usr/share/vdsm/virt/vm.py", line 4277, in _getUnderlyingHostDeviceInfo
    **self._getUnderlyingDeviceAddress(source))
TypeError: pci_address_to_name() got an unexpected keyword argument 'target'

XML part was:
<hostdev managed="no" mode="subsystem" rawio="yes" type="scsi">
	<source>
		<adapter name="scsi_host2"/>
		<address bus="0" target="1" unit="0"/>
	</source>
</hostdev>
<hostdev managed="no" mode="subsystem" rawio="yes" type="scsi">
	<source>
		<adapter name="scsi_host2"/>
		<address bus="0" target="2" unit="0"/>
	</source>
</hostdev>


As of creating custom partition - by default machine.slice has "a *:* rwm" in devices.list. But for every new VM libvirt removes *:* mask and fills the list with actually needed devices (as I understand the process). For example:

c 136:* rw
c 1:3 rw
c 1:7 rw
c 1:5 rw
c 1:8 rw
c 1:9 rw
c 5:2 rw
c 10:232 rw
c 253:0 rw
c 10:228 rw
c 10:196 rw

What I'm looking for is a way to tell libvirt about my additional devices without breaking oVirt.

--
Dmitry Glushenok
Jet Infosystems
http://www.jet.msk.su
+7-495-411-7601 (ext. 1237)

> 3 июня 2016 г., в 12:24, Martin Polednik <mpolednik at redhat.com> написал(а):
> 
> On 03/06/16 11:48 +0300, Дмитрий Глушенок wrote:
>> Hello!
>> 
>> Is it possible to tell libvirt to add specific devices to qemu cgroup? By somehow enumerating the devices in XML using a hook for example.
>> I'm passing scsi-generic disks (/dev/sgX) to VM using qemucmdline hook and it doesn't work until I remove "devices" from cgroup_controllers in qemu.conf.
> 
> One way to achieve this is creating a hook to generate the scsi device
> XML instead of modifying qemu cmdline directly. Libvirt assumes
> ownership of all devices created in the XML and therefore adds them to
> the machine cgroup.
> 
> Example of the XML taken from [1]:
> <devices>
>   <hostdev mode='subsystem' type='scsi' sgio='filtered' rawio='yes'>
>       <source>
>           <adapter name='scsi_host0'/>
>           <address bus='0' target='0' unit='0'/>
>       </source>
>       <readonly/>
>       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
>   </hostdev>
> </devices>
> 
> There is slight issue with this approach outlined in [2].
> 
> If you want to keep the qemu approach, I think creating a custom
> partition and moving devices there would be the cleanest approach. In
> this case, [3] could help but I'm not entirely sure if that would
> solve the issue.
> 
> [1] https://libvirt.org/formatdomain.html
> [2] https://bugzilla.redhat.com/show_bug.cgi?id=1325485
> [3] https://libvirt.org/cgroups.html
>> --
>> Dmitry Glushenok
>> Jet Infosystems
>> http://www.jet.msk.su
>> +7-495-411-7601 (ext. 1237)
>> 
>> _______________________________________________
>> Users mailing list
>> Users at ovirt.org
>> http://lists.ovirt.org/mailman/listinfo/users



More information about the Users mailing list