我正在尝试从 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_del
while的调用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 设备列表中。