Description of problem: Changing "Number of VFs setting" from 0 to any number of VFs supported, results in error: "Failed to change the number of virtual functions", and the following vdsm error: "Thread-1639::DEBUG::2015-09-05 21:59:06,639::__init__::503::jsonrpc.JsonRpcServer::(_serveRequest) Calling 'Host.hostdevChangeNumvfs' in bridge with {u'deviceName': u'pci_0000_04_00_1', u'numvfs': 24} Thread-1639::ERROR::2015-09-05 21:59:06,641::__init__::527::jsonrpc.JsonRpcServer::(_serveRequest) Internal server error Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/yajsonrpc/__init__.py", line 522, in _serveRequest res = method(**params) File "/usr/share/vdsm/rpc/Bridge.py", line 273, in _dynamicMethod result = fn(*methodArgs) File "/usr/share/vdsm/API.py", line 1346, in hostdevChangeNumvfs hostdev.change_numvfs(deviceName, numvfs) File "/usr/share/vdsm/hostdev.py", line 201, in change_numvfs supervdsm.getProxy().changeNumvfs(name_to_pci_path(device_name), numvfs) File "/usr/share/vdsm/supervdsm.py", line 50, in __call__ return callMethod() File "/usr/share/vdsm/supervdsm.py", line 48, in <lambda> **kwargs) File "<string>", line 2, in changeNumvfs File "/usr/lib64/python2.7/multiprocessing/managers.py", line 773, in _callmethod raise convert_to_error(kind, result) IOError: [Errno 38] Function not implemented" I have two pNIC's in a bond tied to ovirt management network. I've destroyed the bond, tied ovirt management network to one pNIC and tried to change the number of VFs on a second pNIC. It's Emulex 10Gb card with be2net driver loaded (i can provide more details if needed): Capabilities: [180 v1] Single Root I/O Virtualization (SR-IOV) IOVCap: Migration-, Interrupt Message Number: 000 IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy- IOVSta: Migration- Initial VFs: 24, Total VFs: 24, Number of VFs: 0, Function Dependency Link: 01 I've added a conf file in modprobe.d containing: "options be2net num_vfs=24" Version-Release number of selected component (if applicable): CentOS 7.1 vdsm-4.17.4-4.git6d8c446.el7.noarch ovirt-engine-3.6.0-0.0.master.20150902180302.git06e5bc1.el7.centos.noarch
Oops, maybe I've jumped the gun on this one. I found this printk that pops up when I try to change number of vfs. be2net: Driver doesn't support SRIOV configuration via sysfs. Could be driver limitation: echo 24 > /sys/class/net/eno2/device/sriov_numvfs -bash: echo: write error: Function not implemented Any advice?
I had to rebuild initramfs, after that, num_vfs parameter was effective and vdsm picked up every enabled vf. This is not a bug at all, if anything, some great error handling. Sorry for the noise :) Ivan