Thread (11 messages) 11 messages, 3 authors, 2017-08-09

Re: [PATCH net-next 0/1] netvsc: another VF datapath fix

flat view

From: Stephen Hemminger <stephen@networkplumber.org>
Date: 2017-08-08 15:29:30

On Tue, 08 Aug 2017 17:24:03 +0200
Vitaly Kuznetsov [off-list ref] wrote:
Stephen Hemminger [off-list ref] writes:
quoted
On Tue, 08 Aug 2017 16:03:56 +0200
Vitaly Kuznetsov [off-list ref] wrote:
 
quoted
Stephen Hemminger [off-list ref] writes:
  
quoted
Previous fix was incomplete.
   
Not really related to this patch series (which btw fixes my issue,
thanks!), but I found one addition issue. Systemd fails to rename VF
interface:

 kernel: mlx4_core 0002:00:02.0 eth2: joined to eth1
 kernel: hv_netvsc 33b7a6f9-6736-451f-8fce-b382eaa50bee eth1: VF registering: eth2
 kernel: hv_netvsc 33b7a6f9-6736-451f-8fce-b382eaa50bee eth1: Data path switched to VF: eth2
 kernel: mlx4_en: eth2: Link Up
 NetworkManager[750]: <info>  [1502200557.0821] device (eth2): link connected
 NetworkManager[750]: <info>  [1502200557.1004] manager: (eth2): new Ethernet device (/org/freedesktop/NetworkManager/Devices/6)
 systemd-udevd[6942]: Error changing net interface name 'eth2' to 'enP2p0s2': Device or resource busy
 systemd-udevd[6942]: could not rename interface '6' from 'eth2' to 'enP2p0s2': Device or resource busy

With some debug added I figured out what's wrong: __netvsc_vf_setup()
does dev_open() which sets IFF_UP flag on the interface. When systemd
tries to rename the interface we get into dev_change_name() and this
fails with -EBUSY when (dev->flags & IFF_UP).

The issue is of less importance as we're not supposed to configure VF
interface now. However, we may still want to get a stable name for it.

Any idea how this can be fixed?  
The problem is Network Manager should ignore the VF device. I don't run NM on these
interfaces because it causes more issues than it helps (dueling userspace).

The driver needs to have slave track the master interface. Relying on userspace
to bring interface up leads to all the issues the bonding script had.

One option would be to delay the work of bringing up the slave device to allow
small window for renaming to run.  
Actually, I tried removing 'if (dev->flags & IFF_UP)' check from
dev_change_name() and everything seems to work fine. The history of this
code predates git so I have no idea why it's forbiden to change names of
IFF_UP interfaces... I can send an RFC removing the check to figure out
the truth :-)
That only works because NM by default brings everything up.
Many users don't use NM on servers.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help