From: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> To: kvm@vger.kernel.org, qemu-devel@nongnu.org Cc: avi@redhat.com, anthony@codemonkey.ws, aliguori@us.ibm.com, mtosatti@redhat.com, dlaor@redhat.com, mst@redhat.com, kwolf@redhat.com, ananth@in.ibm.com, psuriset@linux.vnet.ibm.com, vatsa@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com, ohmura.kei@lab.ntt.co.jp, Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> Subject: [PATCH 02/19] Introduce read() to FdMigrationState. Date: Fri, 14 Jan 2011 02:15:24 +0900 [thread overview] Message-ID: <1294938941-9532-3-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> (raw) In-Reply-To: <1294938941-9532-1-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> 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-tcp.c | 15 +++++++++++++++ migration.c | 12 ++++++++++++ migration.h | 3 +++ 3 files changed, 30 insertions(+), 0 deletions(-) diff --git a/migration-tcp.c b/migration-tcp.c index b55f419..96e2411 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 e5ba51c..6416ae5 100644 --- a/migration.c +++ b/migration.c @@ -330,6 +330,18 @@ 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, int size) +{ + FdMigrationState *s = opaque; + ssize_t 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 d13ed4f..f033262 100644 --- a/migration.h +++ b/migration.h @@ -47,6 +47,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; }; @@ -115,6 +116,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, int size); + void migrate_fd_connect(FdMigrationState *s); void migrate_fd_put_ready(void *opaque); -- 1.7.1.2
WARNING: multiple messages have this Message-ID (diff)
From: Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp> To: kvm@vger.kernel.org, qemu-devel@nongnu.org Cc: 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, Yoshiaki Tamura <tamura.yoshiaki@lab.ntt.co.jp>, ohmura.kei@lab.ntt.co.jp, avi@redhat.com, psuriset@linux.vnet.ibm.com, stefanha@linux.vnet.ibm.com Subject: [Qemu-devel] [PATCH 02/19] Introduce read() to FdMigrationState. Date: Fri, 14 Jan 2011 02:15:24 +0900 [thread overview] Message-ID: <1294938941-9532-3-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> (raw) In-Reply-To: <1294938941-9532-1-git-send-email-tamura.yoshiaki@lab.ntt.co.jp> 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-tcp.c | 15 +++++++++++++++ migration.c | 12 ++++++++++++ migration.h | 3 +++ 3 files changed, 30 insertions(+), 0 deletions(-) diff --git a/migration-tcp.c b/migration-tcp.c index b55f419..96e2411 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 e5ba51c..6416ae5 100644 --- a/migration.c +++ b/migration.c @@ -330,6 +330,18 @@ 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, int size) +{ + FdMigrationState *s = opaque; + ssize_t 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 d13ed4f..f033262 100644 --- a/migration.h +++ b/migration.h @@ -47,6 +47,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; }; @@ -115,6 +116,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, int size); + void migrate_fd_connect(FdMigrationState *s); void migrate_fd_put_ready(void *opaque); -- 1.7.1.2
next prev parent reply other threads:[~2011-01-13 17:20 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-01-13 17:15 [PATCH 00/19] Kemari for KVM v0.2.4 Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 01/19] Make QEMUFile buf expandable, and introduce qemu_realloc_buffer() and qemu_clear_buffer() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` Yoshiaki Tamura [this message] 2011-01-13 17:15 ` [Qemu-devel] [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 03/19] Introduce skip_header parameter to qemu_loadvm_state() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 04/19] qemu-char: export socket_set_nodelay() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 05/19] vl.c: add deleted flag for deleting the handler Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 06/19] virtio: decrement last_avail_idx with inuse before saving Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 07/19] Introduce fault tolerant VM transaction QEMUFile and ft_mode Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 08/19] savevm: introduce util functions to control ft_trans_file from savevm layer Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 09/19] Introduce event-tap Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 10/19] Call init handler of event-tap at main() in vl.c Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 11/19] ioport: insert event_tap_ioport() to ioport_write() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 12/19] Insert event_tap_mmio() to cpu_physical_memory_rw() in exec.c Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 13/19] net: insert event-tap to qemu_send_packet() and qemu_sendv_packet_async() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 14/19] block: insert event-tap to bdrv_aio_writev() and bdrv_aio_flush() Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 15/19] savevm: introduce qemu_savevm_trans_{begin,commit} Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] [PATCH 15/19] savevm: introduce qemu_savevm_trans_{begin, commit} Yoshiaki Tamura 2011-01-13 21:16 ` Blue Swirl 2011-01-13 21:16 ` Blue Swirl 2011-01-14 17:29 ` Yoshiaki Tamura 2011-01-14 17:29 ` Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 16/19] migration: introduce migrate_ft_trans_{put,get}_ready(), and modify migrate_fd_put_ready() when ft_mode is on Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] [PATCH 16/19] migration: introduce migrate_ft_trans_{put, get}_ready(), " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 17/19] 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-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 17:15 ` [PATCH 18/19] Introduce -k option to enable FT migration mode (Kemari) Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura 2011-01-13 21:17 ` Blue Swirl 2011-01-13 21:17 ` Blue Swirl 2011-01-13 17:15 ` [PATCH 19/19] migration: add a parser to accept FT migration incoming mode Yoshiaki Tamura 2011-01-13 17:15 ` [Qemu-devel] " Yoshiaki Tamura -- strict thread matches above, loose matches on Subject: below -- 2011-02-08 11:01 [PATCH 00/19] Kemari for KVM v0.2.9 Yoshiaki Tamura 2011-02-08 11:01 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-28 7:21 [PATCH 00/19] Kemari for KVM v0.2.8 Yoshiaki Tamura 2011-01-28 7:21 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-26 9:41 [PATCH 00/19] Kemari for KVM v0.2.7 Yoshiaki Tamura 2011-01-26 9:41 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-19 5:44 [PATCH 00/19] Kemari for KVM v0.2.6 Yoshiaki Tamura 2011-01-19 5:44 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-14 17:33 [PATCH 00/19] Kemari for KVM v0.2.5 Yoshiaki Tamura 2011-01-14 17:33 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2011-01-11 10:59 [PATCH 00/19] Kemari for KVM v0.2.3 Yoshiaki Tamura 2011-01-11 10:59 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2010-12-27 8:25 [PATCH 00/19] Kemari for KVM v0.2.2 Yoshiaki Tamura 2010-12-27 8:25 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura 2010-12-24 3:18 [PATCH 00/19] Kemari for KVM v0.2.1 Yoshiaki Tamura 2010-12-24 3:18 ` [PATCH 02/19] Introduce read() to FdMigrationState Yoshiaki Tamura
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=1294938941-9532-3-git-send-email-tamura.yoshiaki@lab.ntt.co.jp \ --to=tamura.yoshiaki@lab.ntt.co.jp \ --cc=aliguori@us.ibm.com \ --cc=ananth@in.ibm.com \ --cc=anthony@codemonkey.ws \ --cc=avi@redhat.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=psuriset@linux.vnet.ibm.com \ --cc=qemu-devel@nongnu.org \ --cc=stefanha@linux.vnet.ibm.com \ --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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.