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:ゲストはnetlinkを介して同様のイベントをRTM_NEWLINK
受け取ります。そのデバイスはPCIデバイスのリストに残ります。netdev_del $NETID
set_link $NETID off