mirror of https://gitee.com/openkylin/qemu.git
virtio-serial: save/load: Send target host connection status if different
If the host connection to a port is closed on the destination machine after migration, whereas the connection was open on the source, the guest has to be informed of that. Similar for a host connection open on the destination. Signed-off-by: Amit Shah <amit.shah@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
16af2e3c35
commit
31abe21f4f
|
@ -395,6 +395,7 @@ static void virtio_serial_save(QEMUFile *f, void *opaque)
|
||||||
*/
|
*/
|
||||||
qemu_put_be32s(f, &port->id);
|
qemu_put_be32s(f, &port->id);
|
||||||
qemu_put_byte(f, port->guest_connected);
|
qemu_put_byte(f, port->guest_connected);
|
||||||
|
qemu_put_byte(f, port->host_connected);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,6 +449,7 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id)
|
||||||
/* Items in struct VirtIOSerialPort */
|
/* Items in struct VirtIOSerialPort */
|
||||||
for (i = 0; i < nr_active_ports; i++) {
|
for (i = 0; i < nr_active_ports; i++) {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
|
bool host_connected;
|
||||||
|
|
||||||
id = qemu_get_be32(f);
|
id = qemu_get_be32(f);
|
||||||
port = find_port_by_id(s, id);
|
port = find_port_by_id(s, id);
|
||||||
|
@ -460,6 +462,15 @@ static int virtio_serial_load(QEMUFile *f, void *opaque, int version_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
port->guest_connected = qemu_get_byte(f);
|
port->guest_connected = qemu_get_byte(f);
|
||||||
|
host_connected = qemu_get_byte(f);
|
||||||
|
if (host_connected != port->host_connected) {
|
||||||
|
/*
|
||||||
|
* We have to let the guest know of the host connection
|
||||||
|
* status change
|
||||||
|
*/
|
||||||
|
send_control_event(port, VIRTIO_CONSOLE_PORT_OPEN,
|
||||||
|
port->host_connected);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue