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:게스트에서는 netlink를 통해 이와 유사한 이벤트를 RTM_NEWLINK받습니다 . 해당 장치는 PCI 장치 목록에 남아 있습니다.netdev_del $NETIDset_link $NETID off

관련 정보