Hi,
If a vhost-user port is deleted (vsctl del-port) while the vhost device is 
still attached to a VM, the port is ending up in some "semi-deleted" state. 
Even though we indicate a reject of the command in netdev_dpdk_vhost_destruct() 
by an ERROR log, we still run netdev_close()/netdev_unref() meaning the name is 
removed from netdev_shash and the memory is also freed (!), given back to dpdk. 
However, the device is NOT linked out from dpdk_list, meaning it will be 
handled in the dpdk_watchdog thread. Since the name is removed from 
netdev_shash, it is treated as not existing from an operators view. Whenever 
this newly freed memory is allocated again, a lot of strange things may happen 
to the "ghost device" present in the dpdk_list.

I think the check for an attached vhost device should be done a lot earlier, 
maybe
ofproto_port_delete() is a good place?

I have only checked the vhost-user port type, may the same problem exists for 
other  types as well?
 
Anyone else seen the problem?
 
BR
/jaw
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to