Bug 1260305 - [SR-IOV] changeNumvfs Function not implemented
[SR-IOV] changeNumvfs Function not implemented
Product: oVirt
Classification: Community
Component: vdsm (Show other bugs)
x86_64 Linux
unspecified Severity medium
: ---
: ---
Assigned To: Dan Kenigsberg
Gil Klein
Depends On:
  Show dependency treegraph
Reported: 2015-09-05 16:22 EDT by Ivan Bulatovic
Modified: 2015-09-06 07:34 EDT (History)
9 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2015-09-06 07:34:23 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Ivan Bulatovic 2015-09-05 16:22:02 EDT
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>
  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
Comment 1 Ivan Bulatovic 2015-09-05 16:41:35 EDT
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?
Comment 2 Ivan Bulatovic 2015-09-06 07:34:23 EDT
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 :)


Note You need to log in before you can comment on or make changes to this bug.