qemu-patch-raspberry4/net
zhanghailiang e1d64c084b net: Forbid dealing with packets when VM is not running
For all NICs(except virtio-net) emulated by qemu,
Such as e1000, rtl8139, pcnet and ne2k_pci,
Qemu can still receive packets when VM is not running.

If this happened in *migration's* last PAUSE VM stage, but
before the end of the migration, the new receiving packets will possibly dirty
parts of RAM which has been cached in *iovec*(will be sent asynchronously) and
dirty parts of new RAM which will be missed.
This will lead serious network fault in VM.

To avoid this, we forbid receiving packets in generic net code when
VM is not running.

Bug reproduction steps:
(1) Start a VM which configured at least one NIC
(2) In VM, open several Terminal and do *Ping IP -i 0.1*
(3) Migrate the VM repeatedly between two Hosts
And the *PING* command in VM will very likely fail with message:
'Destination HOST Unreachable', the NIC in VM will stay unavailable unless you
run 'service network restart'

Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com>
Reviewed-by: Jason Wang <jasowang@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
2014-09-04 14:31:54 +01:00
..
checksum.c net: iovec checksum calculator 2013-03-25 11:13:10 +01:00
clients.h net: L2TPv3 transport 2014-06-27 10:39:10 +02:00
dump.c aio / timers: Switch entire codebase to the new timer API 2013-08-22 19:14:24 +02:00
eth.c misc: Use g_assert_not_reached for code which is expected to be unreachable 2013-07-27 11:22:54 +04:00
hub.c Add the vhost-user netdev backend to the command line 2014-06-19 18:44:18 +03:00
hub.h net: fix qemu_flush_queued_packets() in presence of a hub 2013-02-27 16:10:23 +01:00
l2tpv3.c net: L2TPv3 transport 2014-06-27 10:39:10 +02:00
Makefile.objs net: add mmsghdr struct check for L2TPV3 2014-07-01 17:42:23 +01:00
net.c net: Forbid dealing with packets when VM is not running 2014-09-04 14:31:54 +01:00
netmap.c net: netmap_poll must update both read/write poll state 2014-03-25 13:31:38 +01:00
queue.c net: fix unbounded NetQueue 2013-02-27 16:10:39 +01:00
slirp.c slirp: Give error message if hostfwd_add/remove for unrecognized vlan/stack 2014-07-18 17:45:36 +04:00
socket.c net: call socket_set_fast_reuse instead of setting SO_REUSEADDR 2013-10-02 19:20:31 +02:00
tap-aix.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-bsd.c tap-bsd: implement a FreeBSD only version of tap_open 2014-08-01 15:57:48 +00:00
tap-haiku.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-linux.c tap-linux: Get features once and use it many times 2014-01-27 15:44:06 +01:00
tap-linux.h tap: set IFF_ONE_QUEUE per default 2013-02-27 16:10:47 +01:00
tap-solaris.c tap: multiqueue support 2013-02-01 11:03:02 -06:00
tap-win32.c net: make tap offloading callbacks static 2014-02-25 11:50:17 +01:00
tap.c Add vhost-backend and VhostBackendType 2014-06-19 16:41:56 +03:00
tap_int.h tap: multiqueue support 2013-02-01 11:03:02 -06:00
util.c net: reorganize headers 2012-12-19 08:31:29 +01:00
util.h net: move parse_macaddr() to net/util.[ch] 2009-12-03 09:41:34 -06:00
vde.c net: increase buffer size to accommodate Jumbo frame pkts 2013-03-25 11:14:07 +01:00
vhost-user.c Add the vhost-user netdev backend to the command line 2014-06-19 18:44:18 +03:00