[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 08/17] add unix_msgfd_lookup() to callback get_b
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 08/17] add unix_msgfd_lookup() to callback get_buffer |
Date: |
Tue, 26 Nov 2013 12:31:10 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9 |
Il 21/11/2013 10:11, Lei Li ha scritto:
> + /*
> + * recvmsg is called here to catch the control message for
> + * the exchange of PIPE file descriptor until it is received.
> + */
> + len = recvmsg(s->sockfd, &msg, 0);
> + if (len != -1) {
> + if (unix_msgfd_lookup(s, &msg) > 0) {
> + pipefd_passed = 1;
> + /*
> + * Do not count one byte taken by the PIPE file
> + * descriptor.
> + */
> + len--;
I think adding a byte in the middle of the stream is not reliable.
Rather, you should transmit the socket always at the same place, for
example in the first call of qemu_local_save_ram, after it has written
the 64-bit field.
The matching code in qemu_local_ram_load will be like this:
static int qemu_local_ram_load(QEMUFile *f, void *opaque,
uint64_t flags)
{
QEMUFileLocal *s = opaque;
ram_addr_t addr;
struct iovec iov;
ssize_t ret = -EINVAL;
if (!s->pipefd_received) {
/*
* send_pipefd was called at this point, and it wrote one byte
* to the stream.
*/
qemu_get_byte(s);
s->pipefd_received = true;
}
if (pipefd_passed) {
...
}
return -EINVAL;
}
Also, please move pipefd_passed within QEMUFileLocal.
Thanks,
Paolo
- [Qemu-devel] [PATCH 02/17] migration: add migrate_unix_page_flipping(), (continued)
- [Qemu-devel] [PATCH 02/17] migration: add migrate_unix_page_flipping(), Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 03/17] qmp-command.hx: add missing docs for migration capabilites, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 01/17] QAPI: introduce migration capability unix_page_flipping, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 04/17] migration-local: add QEMUFileLocal with socket based QEMUFile, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 05/17] migration-local: introduce qemu_fopen_socket_local(), Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 06/17] migration-local: add send_pipefd(), Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 07/17] migration-local: override before_ram_iterate to send pipefd, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 08/17] add unix_msgfd_lookup() to callback get_buffer, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 10/17] migration-local: override save_page for page transmit, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 11/17] savevm: adjust ram_control_save_page for page flipping, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 12/17] migration-local: override hook_ram_load, Lei Li, 2013/11/21
- [Qemu-devel] [PATCH 09/17] save_page: replace block_offset with a MemoryRegion, Lei Li, 2013/11/21