autotest / virt-test

Linux Virtualization Tests
Other
97 stars 139 forks source link

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

Open humanux opened 10 years ago

humanux commented 10 years ago

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.

humanux commented 10 years ago

@jzupka please help to fix this issue.

jzupka commented 10 years ago

@humanux hi, I'll take a look on that.

jzupka commented 10 years ago

@humanux I try to create patch which recreate system dependent devs (nic, redirs, and what will be necessary more).

jzupka commented 10 years ago

@humanux After quick fix of this problem I'll try to prepare better solution which totally splits preparation of qemu and system specific (create fd etc) things.

humanux commented 10 years ago

@jzupka thanks for your quickly reply. wait your fix patch