通过 Qemu 监视器删除 NIC

通过 Qemu 监视器删除 NIC

我正在尝试从 Qemu 来宾中删除此网络设备:

(qemu) info network
info network
idRygZ1D: index=0,type=nic,model=virtio-net-pci,macaddr=02:00:00:00:20:06
 \ idU3WwDX: index=0,type=tap,fd=36

(qemu) info pci
info pci
  Bus  0, device   7, function 0:
    Ethernet controller: PCI device 1af4:1000
      IRQ 11.
      BAR0: I/O at 0xc0a0 [0xc0bf].
      BAR1: 32 bit memory at 0xfebd4000 [0xfebd4fff].
      BAR6: 32 bit memory at 0xffffffffffffffff [0x0003fffe].
      id "idRygZ1D"

然而,执行后:

(qemu) netdev_del idU3WwDX 
netdev_del idU3WwDX
(qemu) device_del idRygZ1D 
device_del idRygZ1D

该设备仍然列在 pci 和网络信息以及lspci来宾内部。奇怪的是,随后对netdev_delwhile的调用device_del成功了,但没有产生可观察到的效果:

(qemu) netdev_del idU3WwDX 
netdev_del idU3WwDX
Device 'idU3WwDX' not found
(qemu) device_del idRygZ1D
device_del idRygZ1D
(qemu) device_del idRygZ1D
device_del idRygZ1D

我想有些不对劲。从设备表中删除 NIC 的正确方法是什么?

编辑: 的沉默device_del可能是无关紧要的,因为如果相应的处理程序qmp_device_del()无法将给定的 id 与设备相匹配,则它不会发出消息,而设备 qmp_netdev_del()会发出消息。

编辑2:在来宾中,我确实RTM_NEWLINK通过 netlink收到了一个netdev_del $NETID类似于 的事件set_link $NETID off。该设备仍然保留在 PCI 设备列表中。

相关内容