Skip to content

some times qemu command line using wrong tapfds and vhostfds #1331

@humanux

Description

@humanux

in qemu_vm.py make_qemu_commands()

# If nothing changed and devices exists, return imediatelly                
if (name is None and params is None and root_dir is None and self.devices is not None): 
      return self.devices

unfortunately these check ignore tap fds change, some times guest tap fds will change, for example.

  1. boot a guest then shutdown it (nic.tapfds=22)
  2. boot another guest with same params,( nic.tapfds=28 may be), will raise error like:

emu: -netdev tap,id=id9DXhqO,vhost=on,vhostfd=23,fd=22: TUNGETIFF ioctl() failed: Operation not permitted\nTUNSETOFFLOAD ioctl() failed: Operation not permitted\nqemu: -netdev tap,id=id9DXhqO,vhost=on,vhostfd=23,fd=22: vhost-net requested but could not be initialized\nqemu: -netdev tap,id=id9DXhqO,vhost=on,vhostfd=23,fd=22: Device 'tap' could not be initialized")

need update nic.tapfds and vhostfds before return self.device, or update them during generate qemu command line.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions