net_failover(kernel) | network.service (user) | systemd-udevd (user) --------------------------------------------------+------------------------------+-------------------------------------------- (standby virtio-net and net_failover | | devices created and initialized, | | i.e. virtnet_probe()-> | | net_failover_create() | | was done.) | | | | | runs `ifup ens3' -> | | ip link set dev ens3 up | net_failover_open() | | dev_open(virtnet_dev) | | virtnet_open(virtnet_dev) | | netif_carrier_on(failover_dev) | | ... | | | | (VF hot plugged in) | | ixgbevf_probe() | | register_netdev(ixgbevf_netdev) | | netdev_register_kobject(ixgbevf_netdev) | | kobject_add(ixgbevf_dev) | | device_add(ixgbevf_dev) | | kobject_uevent(&ixgbevf_dev->kobj, KOBJ_ADD) | | netlink_broadcast() | | ... | | call_netdevice_notifiers(NETDEV_REGISTER) | | failover_event(..., NETDEV_REGISTER, ...) | | failover_slave_register(ixgbevf_netdev) | | net_failover_slave_register(ixgbevf_netdev) | | dev_open(ixgbevf_netdev) | | | | | | | | received ADD uevent from netlink fd | | ... | | udev-builtin-net_id.c:dev_pci_slot() | | (decided to renamed 'eth0' ) | | ip link set dev eth0 name ens4 (dev_change_name() returns -EBUSY as | | ixgbevf_netdev->flags has IFF_UP) | | | |