From: Anthony Liguori <anthony@codemonkey.ws>
To: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>
Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, kwolf@redhat.com,
aliguori@us.ibm.com, mtosatti@redhat.com, ananth@in.ibm.com,
mst@redhat.com, dlaor@redhat.com, vatsa@linux.vnet.ibm.com,
blauwirbel@gmail.com, ohmura.kei@lab.ntt.co.jp, avi@redhat.com,
pbonzini@redhat.com, psuriset@linux.vnet.ibm.com,
stefanha@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [PATCH 02/18] Introduce read() to FdMigrationState.
Date: Thu, 10 Feb 2011 10:54:01 +0100 [thread overview]
Message-ID: <4D53B5B9.8070509@codemonkey.ws> (raw)
In-Reply-To: <1297330258-20494-3-git-send-email-tamura.yoshiaki@lab.ntt.co.jp>
On 02/10/2011 10:30 AM, Yoshiaki Tamura wrote:
> Currently FdMigrationState doesn't support read(), and this patch
> introduces it to get response from the other side.
>
> Signed-off-by: Yoshiaki Tamura<tamura.yoshiaki@lab.ntt.co.jp>
>
Migration is unidirectional. Changing this is fundamental and not
something to be done lightly.
I thought we previously discussed using a protocol wrapper around the
existing migration protocol?
Regards,
Anthony Liguori
> ---
> migration-tcp.c | 15 +++++++++++++++
> migration.c | 13 +++++++++++++
> migration.h | 3 +++
> 3 files changed, 31 insertions(+), 0 deletions(-)
>
> diff --git a/migration-tcp.c b/migration-tcp.c
> index b55f419..55777c8 100644
> --- a/migration-tcp.c
> +++ b/migration-tcp.c
> @@ -39,6 +39,20 @@ static int socket_write(FdMigrationState *s, const void * buf, size_t size)
> return send(s->fd, buf, size, 0);
> }
>
> +static int socket_read(FdMigrationState *s, const void * buf, size_t size)
> +{
> + ssize_t len;
> +
> + do {
> + len = recv(s->fd, (void *)buf, size, 0);
> + } while (len == -1&& socket_error() == EINTR);
> + if (len == -1) {
> + len = -socket_error();
> + }
> +
> + return len;
> +}
> +
> static int tcp_close(FdMigrationState *s)
> {
> DPRINTF("tcp_close\n");
> @@ -94,6 +108,7 @@ MigrationState *tcp_start_outgoing_migration(Monitor *mon,
>
> s->get_error = socket_errno;
> s->write = socket_write;
> + s->read = socket_read;
> s->close = tcp_close;
> s->mig_state.cancel = migrate_fd_cancel;
> s->mig_state.get_status = migrate_fd_get_status;
> diff --git a/migration.c b/migration.c
> index 3612572..f0df5fc 100644
> --- a/migration.c
> +++ b/migration.c
> @@ -340,6 +340,19 @@ ssize_t migrate_fd_put_buffer(void *opaque, const void *data, size_t size)
> return ret;
> }
>
> +int migrate_fd_get_buffer(void *opaque, uint8_t *data, int64_t pos, size_t size)
> +{
> + FdMigrationState *s = opaque;
> + int ret;
> +
> + ret = s->read(s, data, size);
> + if (ret == -1) {
> + ret = -(s->get_error(s));
> + }
> +
> + return ret;
> +}
> +
> void migrate_fd_connect(FdMigrationState *s)
> {
> int ret;
> diff --git a/migration.h b/migration.h
> index 2170792..88a6987 100644
> --- a/migration.h
> +++ b/migration.h
> @@ -48,6 +48,7 @@ struct FdMigrationState
> int (*get_error)(struct FdMigrationState*);
> int (*close)(struct FdMigrationState*);
> int (*write)(struct FdMigrationState*, const void *, size_t);
> + int (*read)(struct FdMigrationState *, const void *, size_t);
> void *opaque;
> };
>
> @@ -116,6 +117,8 @@ void migrate_fd_put_notify(void *opaque);
>
> ssize_t migrate_fd_put_buffer(void *opaque, const void *data, size_t size);
>
> +int migrate_fd_get_buffer(void *opaque, uint8_t *data, int64_t pos, size_t size);
> +
> void migrate_fd_connect(FdMigrationState *s);
>
> void migrate_fd_put_ready(void *opaque);
>
next prev parent reply other threads:[~2011-02-10 9:54 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-10 9:30 [PATCH 00/18] Kemari for KVM v0.2.10 Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 01/18] Make QEMUFile buf expandable, and introduce qemu_realloc_buffer() and qemu_clear_buffer() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 02/18] Introduce read() to FdMigrationState Yoshiaki Tamura
2011-02-10 9:54 ` Anthony Liguori [this message]
2011-02-10 10:00 ` [Qemu-devel] " Yoshiaki Tamura
2011-02-10 10:18 ` Daniel P. Berrange
2011-02-10 10:23 ` Yoshiaki Tamura
2011-02-10 10:44 ` Daniel P. Berrange
2011-02-10 10:51 ` Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 03/18] Introduce skip_header parameter to qemu_loadvm_state() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 04/18] qemu-char: export socket_set_nodelay() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 05/18] vl.c: add deleted flag for deleting the handler Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 06/18] virtio: decrement last_avail_idx with inuse before saving Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 07/18] Introduce fault tolerant VM transaction QEMUFile and ft_mode Yoshiaki Tamura
2011-02-21 4:46 ` ya su
2011-02-21 9:42 ` [Qemu-devel] " Yoshiaki Tamura
2011-02-23 2:28 ` ya su
2011-02-23 5:05 ` [Qemu-devel] " Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 08/18] savevm: introduce util functions to control ft_trans_file from savevm layer Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 09/18] Introduce event-tap Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 10/18] Call init handler of event-tap at main() in vl.c Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 11/18] ioport: insert event_tap_ioport() to ioport_write() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 12/18] Insert event_tap_mmio() to cpu_physical_memory_rw() in exec.c Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 13/18] net: insert event-tap to qemu_send_packet() and qemu_sendv_packet_async() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 14/18] block: insert event-tap to bdrv_aio_writev(), bdrv_aio_flush() and bdrv_flush() Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 15/18] savevm: introduce qemu_savevm_trans_{begin,commit} Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 16/18] migration: introduce migrate_ft_trans_{put,get}_ready(), and modify migrate_fd_put_ready() when ft_mode is on Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 17/18] migration-tcp: modify tcp_accept_incoming_migration() to handle ft_mode, and add a hack not to close fd when ft_mode is enabled Yoshiaki Tamura
2011-02-10 9:30 ` [PATCH 18/18] Introduce "kemari:" to enable FT migration mode (Kemari) Yoshiaki Tamura
2011-02-10 9:52 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4D53B5B9.8070509@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aliguori@us.ibm.com \
--cc=ananth@in.ibm.com \
--cc=avi@redhat.com \
--cc=blauwirbel@gmail.com \
--cc=dlaor@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=kwolf@redhat.com \
--cc=mst@redhat.com \
--cc=mtosatti@redhat.com \
--cc=ohmura.kei@lab.ntt.co.jp \
--cc=pbonzini@redhat.com \
--cc=psuriset@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
--cc=tamura.yoshiaki@lab.ntt.co.jp \
--cc=vatsa@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).