
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@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@ovirt.org http://lists.ovirt.org/mailman/listinfo/users