kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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);
>    


  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).