From: Isaku Yamahata <yamahata@valinux.co.jp> To: qemu-devel@nongnu.org, kvm@vger.kernel.org Cc: quintela@redhat.com, pbonzini@redhat.com, owasserm@redhat.com, avi@redhat.com, dlaor@redhat.com, mdroth@linux.vnet.ibm.com, t.hirofuchi@aist.go.jp, satoshi.itoh@aist.go.jp, stefanha@gmail.com, yoshikawa.takuya@oss.ntt.co.jp, benoit.hudzia@gmail.com, aarcange@redhat.com, chegu_vinod@hp.com, aliguori@us.ibm.com Subject: [PATCH v3 27/35] postcopy/outgoing: implement forward/backword prefault Date: Tue, 30 Oct 2012 17:33:03 +0900 [thread overview] Message-ID: <ff9579ff48a2cba1ebf5fd97a6dde4246ea1175d.1351582535.git.yamahata@valinux.co.jp> (raw) In-Reply-To: <cover.1351582535.git.yamahata@valinux.co.jp> In-Reply-To: <cover.1351582535.git.yamahata@valinux.co.jp> When page is requested, send surrounding pages are also sent. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> --- hmp-commands.hx | 15 ++++++++----- hmp.c | 3 +++ migration-postcopy.c | 57 +++++++++++++++++++++++++++++++++++++++++++++----- migration.c | 20 ++++++++++++++++++ migration.h | 2 ++ qapi-schema.json | 3 ++- 6 files changed, 89 insertions(+), 11 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index b054760..5e2c77c 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -826,26 +826,31 @@ ETEXI { .name = "migrate", - .args_type = "detach:-d,blk:-b,inc:-i,postcopy:-p,nobg:-n,uri:s", - .params = "[-d] [-b] [-i] [-p [-n]] uri", + .args_type = "detach:-d,blk:-b,inc:-i,postcopy:-p,nobg:-n,uri:s," + "forward:i?,backward:i?", + .params = "[-d] [-b] [-i] [-p [-n] uri [forward] [backword]", .help = "migrate to URI (using -d to not wait for completion)" "\n\t\t\t -b for migration without shared storage with" " full copy of disk\n\t\t\t -i for migration without " "shared storage with incremental copy of disk " "(base image shared between src and destination)" "\n\t\t\t-p for migration with postcopy mode enabled" - "\n\t\t\t-n for no background transfer of postcopy mode", + "\n\t\t\t-n for no background transfer of postcopy mode" + "\n\t\t\tforward: the number of pages to " + "forward-prefault when postcopy (default 0)" + "\n\t\t\tbackward: the number of pages to " + "backward-prefault when postcopy (default 0)", .mhandler.cmd = hmp_migrate, }, STEXI -@item migrate [-d] [-b] [-i] [-p [-n]] @var{uri} +@item migrate [-d] [-b] [-i] [-p [-n]] @var{uri} @var{forward} @var{backward} @findex migrate Migrate to @var{uri} (using -d to not wait for completion). -b for migration with full copy of disk -i for migration with incremental copy of disk (base image is shared) - -p for migration with postcopy mode enabled + -p for migration with postcopy mode enabled (forward/backward is prefault size when postcopy) -n for migration with postcopy mode enabled without background transfer ETEXI diff --git a/hmp.c b/hmp.c index 203b552..fb1275d 100644 --- a/hmp.c +++ b/hmp.c @@ -1037,11 +1037,14 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) int inc = qdict_get_try_bool(qdict, "inc", 0); int postcopy = qdict_get_try_bool(qdict, "postcopy", 0); int nobg = qdict_get_try_bool(qdict, "nobg", 0); + int forward = qdict_get_try_int(qdict, "forward", 0); + int backward = qdict_get_try_int(qdict, "backward", 0); const char *uri = qdict_get_str(qdict, "uri"); Error *err = NULL; qmp_migrate(uri, !!blk, blk, !!inc, inc, false, false, !!postcopy, postcopy, !!nobg, nobg, + !!forward, forward, !!backward, backward, &err); if (err) { monitor_printf(mon, "migrate: %s\n", error_get_pretty(err)); diff --git a/migration-postcopy.c b/migration-postcopy.c index 5f98ae6..3d51898 100644 --- a/migration-postcopy.c +++ b/migration-postcopy.c @@ -344,6 +344,37 @@ int postcopy_outgoing_ram_save_complete(QEMUFile *f, void *opaque) return 0; } +static void postcopy_outgoing_ram_save_page(PostcopyOutgoingState *s, + uint64_t pgoffset, bool *written, + bool forward, + int prefault_pgoffset) +{ + ram_addr_t offset; + int ret; + + if (forward) { + pgoffset += prefault_pgoffset; + } else { + if (pgoffset < prefault_pgoffset) { + return; + } + pgoffset -= prefault_pgoffset; + } + + offset = pgoffset << TARGET_PAGE_BITS; + if (offset >= s->last_block_read->length) { + assert(forward); + assert(prefault_pgoffset > 0); + return; + } + + ret = ram_save_page(s->mig_buffered_write, s->last_block_read, offset, + false); + if (ret > 0) { + *written = true; + } +} + /* * return value * 0: continue postcopy mode @@ -355,6 +386,7 @@ static int postcopy_outgoing_handle_req(PostcopyOutgoingState *s, bool *written) { int i; + uint64_t j; RAMBlock *block; DPRINTF("cmd %d state %d\n", req->cmd, s->state); @@ -387,11 +419,26 @@ static int postcopy_outgoing_handle_req(PostcopyOutgoingState *s, break; } for (i = 0; i < req->nr; i++) { - DPRINTF("offs[%d] 0x%"PRIx64"\n", i, req->pgoffs[i]); - int ret = ram_save_page(s->mig_buffered_write, s->last_block_read, - req->pgoffs[i] << TARGET_PAGE_BITS, false); - if (ret > 0) { - *written = true; + DPRINTF("pgoffs[%d] 0x%"PRIx64"\n", i, req->pgoffs[i]); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + true, 0); + } + /* forward prefault */ + for (j = 1; j <= s->ms->params.prefault_forward; j++) { + for (i = 0; i < req->nr; i++) { + DPRINTF("pgoffs[%d] + 0x%"PRIx64" 0x%"PRIx64"\n", + i, j, req->pgoffs[i] + j); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + true, j); + } + } + /* backward prefault */ + for (j = 1; j <= s->ms->params.prefault_backward; j++) { + for (i = 0; i < req->nr; i++) { + DPRINTF("pgoffs[%d] - 0x%"PRIx64" 0x%"PRIx64"\n", + i, j, req->pgoffs[i] - j); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + false, j); } } break; diff --git a/migration.c b/migration.c index 279dda5..f29e3bb 100644 --- a/migration.c +++ b/migration.c @@ -511,6 +511,8 @@ void migrate_del_blocker(Error *reason) void qmp_migrate(const char *uri, bool has_blk, bool blk, bool has_inc, bool inc, bool has_detach, bool detach, bool has_postcopy, bool postcopy, bool has_nobg, bool nobg, + bool has_forward, int64_t forward, + bool has_backward, int64_t backward, Error **errp) { MigrationState *s = migrate_get_current(); @@ -522,6 +524,24 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, params.shared = inc; params.postcopy = postcopy; params.nobg = nobg; + params.prefault_forward = 0; + if (has_forward) { + if (forward < 0) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, + "forward", "forward >= 0"); + return; + } + params.prefault_forward = forward; + } + params.prefault_backward = 0; + if (has_backward) { + if (backward < 0) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, + "backward", "backward >= 0"); + return; + } + params.prefault_backward = backward; + } if (s->state == MIG_STATE_ACTIVE) { error_set(errp, QERR_MIGRATION_ACTIVE); diff --git a/migration.h b/migration.h index 6724c19..8462251 100644 --- a/migration.h +++ b/migration.h @@ -26,6 +26,8 @@ struct MigrationParams { bool shared; bool postcopy; bool nobg; + int64_t prefault_forward; + int64_t prefault_backward; }; typedef struct MigrationState MigrationState; diff --git a/qapi-schema.json b/qapi-schema.json index 70d0577..746bf21 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2095,7 +2095,8 @@ ## { 'command': 'migrate', 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' , - '*postcopy': 'bool', '*nobg': 'bool'} } + '*postcopy': 'bool', '*nobg': 'bool', + '*forward': 'int', '*backward': 'int'} } # @xen-save-devices-state: # -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: Isaku Yamahata <yamahata@valinux.co.jp> To: qemu-devel@nongnu.org, kvm@vger.kernel.org Cc: benoit.hudzia@gmail.com, aarcange@redhat.com, aliguori@us.ibm.com, quintela@redhat.com, stefanha@gmail.com, t.hirofuchi@aist.go.jp, dlaor@redhat.com, satoshi.itoh@aist.go.jp, mdroth@linux.vnet.ibm.com, yoshikawa.takuya@oss.ntt.co.jp, owasserm@redhat.com, avi@redhat.com, pbonzini@redhat.com, chegu_vinod@hp.com Subject: [Qemu-devel] [PATCH v3 27/35] postcopy/outgoing: implement forward/backword prefault Date: Tue, 30 Oct 2012 17:33:03 +0900 [thread overview] Message-ID: <ff9579ff48a2cba1ebf5fd97a6dde4246ea1175d.1351582535.git.yamahata@valinux.co.jp> (raw) In-Reply-To: <cover.1351582535.git.yamahata@valinux.co.jp> In-Reply-To: <cover.1351582535.git.yamahata@valinux.co.jp> When page is requested, send surrounding pages are also sent. Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> --- hmp-commands.hx | 15 ++++++++----- hmp.c | 3 +++ migration-postcopy.c | 57 +++++++++++++++++++++++++++++++++++++++++++++----- migration.c | 20 ++++++++++++++++++ migration.h | 2 ++ qapi-schema.json | 3 ++- 6 files changed, 89 insertions(+), 11 deletions(-) diff --git a/hmp-commands.hx b/hmp-commands.hx index b054760..5e2c77c 100644 --- a/hmp-commands.hx +++ b/hmp-commands.hx @@ -826,26 +826,31 @@ ETEXI { .name = "migrate", - .args_type = "detach:-d,blk:-b,inc:-i,postcopy:-p,nobg:-n,uri:s", - .params = "[-d] [-b] [-i] [-p [-n]] uri", + .args_type = "detach:-d,blk:-b,inc:-i,postcopy:-p,nobg:-n,uri:s," + "forward:i?,backward:i?", + .params = "[-d] [-b] [-i] [-p [-n] uri [forward] [backword]", .help = "migrate to URI (using -d to not wait for completion)" "\n\t\t\t -b for migration without shared storage with" " full copy of disk\n\t\t\t -i for migration without " "shared storage with incremental copy of disk " "(base image shared between src and destination)" "\n\t\t\t-p for migration with postcopy mode enabled" - "\n\t\t\t-n for no background transfer of postcopy mode", + "\n\t\t\t-n for no background transfer of postcopy mode" + "\n\t\t\tforward: the number of pages to " + "forward-prefault when postcopy (default 0)" + "\n\t\t\tbackward: the number of pages to " + "backward-prefault when postcopy (default 0)", .mhandler.cmd = hmp_migrate, }, STEXI -@item migrate [-d] [-b] [-i] [-p [-n]] @var{uri} +@item migrate [-d] [-b] [-i] [-p [-n]] @var{uri} @var{forward} @var{backward} @findex migrate Migrate to @var{uri} (using -d to not wait for completion). -b for migration with full copy of disk -i for migration with incremental copy of disk (base image is shared) - -p for migration with postcopy mode enabled + -p for migration with postcopy mode enabled (forward/backward is prefault size when postcopy) -n for migration with postcopy mode enabled without background transfer ETEXI diff --git a/hmp.c b/hmp.c index 203b552..fb1275d 100644 --- a/hmp.c +++ b/hmp.c @@ -1037,11 +1037,14 @@ void hmp_migrate(Monitor *mon, const QDict *qdict) int inc = qdict_get_try_bool(qdict, "inc", 0); int postcopy = qdict_get_try_bool(qdict, "postcopy", 0); int nobg = qdict_get_try_bool(qdict, "nobg", 0); + int forward = qdict_get_try_int(qdict, "forward", 0); + int backward = qdict_get_try_int(qdict, "backward", 0); const char *uri = qdict_get_str(qdict, "uri"); Error *err = NULL; qmp_migrate(uri, !!blk, blk, !!inc, inc, false, false, !!postcopy, postcopy, !!nobg, nobg, + !!forward, forward, !!backward, backward, &err); if (err) { monitor_printf(mon, "migrate: %s\n", error_get_pretty(err)); diff --git a/migration-postcopy.c b/migration-postcopy.c index 5f98ae6..3d51898 100644 --- a/migration-postcopy.c +++ b/migration-postcopy.c @@ -344,6 +344,37 @@ int postcopy_outgoing_ram_save_complete(QEMUFile *f, void *opaque) return 0; } +static void postcopy_outgoing_ram_save_page(PostcopyOutgoingState *s, + uint64_t pgoffset, bool *written, + bool forward, + int prefault_pgoffset) +{ + ram_addr_t offset; + int ret; + + if (forward) { + pgoffset += prefault_pgoffset; + } else { + if (pgoffset < prefault_pgoffset) { + return; + } + pgoffset -= prefault_pgoffset; + } + + offset = pgoffset << TARGET_PAGE_BITS; + if (offset >= s->last_block_read->length) { + assert(forward); + assert(prefault_pgoffset > 0); + return; + } + + ret = ram_save_page(s->mig_buffered_write, s->last_block_read, offset, + false); + if (ret > 0) { + *written = true; + } +} + /* * return value * 0: continue postcopy mode @@ -355,6 +386,7 @@ static int postcopy_outgoing_handle_req(PostcopyOutgoingState *s, bool *written) { int i; + uint64_t j; RAMBlock *block; DPRINTF("cmd %d state %d\n", req->cmd, s->state); @@ -387,11 +419,26 @@ static int postcopy_outgoing_handle_req(PostcopyOutgoingState *s, break; } for (i = 0; i < req->nr; i++) { - DPRINTF("offs[%d] 0x%"PRIx64"\n", i, req->pgoffs[i]); - int ret = ram_save_page(s->mig_buffered_write, s->last_block_read, - req->pgoffs[i] << TARGET_PAGE_BITS, false); - if (ret > 0) { - *written = true; + DPRINTF("pgoffs[%d] 0x%"PRIx64"\n", i, req->pgoffs[i]); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + true, 0); + } + /* forward prefault */ + for (j = 1; j <= s->ms->params.prefault_forward; j++) { + for (i = 0; i < req->nr; i++) { + DPRINTF("pgoffs[%d] + 0x%"PRIx64" 0x%"PRIx64"\n", + i, j, req->pgoffs[i] + j); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + true, j); + } + } + /* backward prefault */ + for (j = 1; j <= s->ms->params.prefault_backward; j++) { + for (i = 0; i < req->nr; i++) { + DPRINTF("pgoffs[%d] - 0x%"PRIx64" 0x%"PRIx64"\n", + i, j, req->pgoffs[i] - j); + postcopy_outgoing_ram_save_page(s, req->pgoffs[i], written, + false, j); } } break; diff --git a/migration.c b/migration.c index 279dda5..f29e3bb 100644 --- a/migration.c +++ b/migration.c @@ -511,6 +511,8 @@ void migrate_del_blocker(Error *reason) void qmp_migrate(const char *uri, bool has_blk, bool blk, bool has_inc, bool inc, bool has_detach, bool detach, bool has_postcopy, bool postcopy, bool has_nobg, bool nobg, + bool has_forward, int64_t forward, + bool has_backward, int64_t backward, Error **errp) { MigrationState *s = migrate_get_current(); @@ -522,6 +524,24 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk, params.shared = inc; params.postcopy = postcopy; params.nobg = nobg; + params.prefault_forward = 0; + if (has_forward) { + if (forward < 0) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, + "forward", "forward >= 0"); + return; + } + params.prefault_forward = forward; + } + params.prefault_backward = 0; + if (has_backward) { + if (backward < 0) { + error_set(errp, QERR_INVALID_PARAMETER_VALUE, + "backward", "backward >= 0"); + return; + } + params.prefault_backward = backward; + } if (s->state == MIG_STATE_ACTIVE) { error_set(errp, QERR_MIGRATION_ACTIVE); diff --git a/migration.h b/migration.h index 6724c19..8462251 100644 --- a/migration.h +++ b/migration.h @@ -26,6 +26,8 @@ struct MigrationParams { bool shared; bool postcopy; bool nobg; + int64_t prefault_forward; + int64_t prefault_backward; }; typedef struct MigrationState MigrationState; diff --git a/qapi-schema.json b/qapi-schema.json index 70d0577..746bf21 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -2095,7 +2095,8 @@ ## { 'command': 'migrate', 'data': {'uri': 'str', '*blk': 'bool', '*inc': 'bool', '*detach': 'bool' , - '*postcopy': 'bool', '*nobg': 'bool'} } + '*postcopy': 'bool', '*nobg': 'bool', + '*forward': 'int', '*backward': 'int'} } # @xen-save-devices-state: # -- 1.7.10.4
next prev parent reply other threads:[~2012-10-30 8:33 UTC|newest] Thread overview: 94+ messages / expand[flat|nested] mbox.gz Atom feed top 2012-10-30 8:32 [PATCH v3 00/35] postcopy live migration Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 01/35] migration.c: remove redundant line in migrate_init() Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 02/35] arch_init: DPRINTF format error and typo Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 03/35] split MRU ram list Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 04/35] add a version number to ram_list Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 05/35] protect the ramlist with a separate mutex Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 06/35] osdep: add qemu_read_full() to read interrupt-safely Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 07/35] savevm: export qemu_peek_buffer, qemu_peek_byte, qemu_file_skip, qemu_fflush Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 08/35] savevm/QEMUFile: consolidate QEMUFile functions a bit Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 09/35] savevm/QEMUFile: introduce qemu_fopen_fd Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 10/35] savevm/QEMUFile: add read/write QEMUFile on memory buffer Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 11/35] savevm, buffered_file: introduce method to drain buffer of buffered file Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 12/35] arch_init: export RAM_SAVE_xxx flags for postcopy Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 13/35] arch_init/ram_save: introduce constant for ram save version = 4 Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 14/35] arch_init: refactor ram_save_block() and export ram_save_block() Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 15/35] arch_init/ram_save_setup: factor out bitmap alloc/free Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 16/35] arch_init/ram_load: refactor ram_load Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 17/35] arch_init: factor out logic to find ram block with id string Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 18/35] migration: export migrate_fd_completed() and migrate_fd_cleanup() Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 19/35] uvmem.h: import Linux uvmem.h and teach update-linux-headers.sh Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 20/35] osdep: add QEMU_MADV_REMOVE and tirivial fix Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 21/35] postcopy: introduce helper functions for postcopy Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 22/35] savevm: add new section that is used by postcopy Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:32 ` [PATCH v3 23/35] postcopy: implement incoming part of postcopy live migration Isaku Yamahata 2012-10-30 8:32 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 24/35] postcopy outgoing: add -p option to migrate command Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-11-01 19:48 ` Eric Blake 2012-11-01 19:48 ` [Qemu-devel] " Eric Blake 2012-10-30 8:33 ` [PATCH v3 25/35] postcopy: implement outgoing part of postcopy live migration Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 26/35] postcopy/outgoing: add -n options to disable background transfer Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-11-01 19:56 ` Eric Blake 2012-11-01 19:56 ` Eric Blake 2012-10-30 8:33 ` Isaku Yamahata [this message] 2012-10-30 8:33 ` [Qemu-devel] [PATCH v3 27/35] postcopy/outgoing: implement forward/backword prefault Isaku Yamahata 2012-11-01 20:10 ` Eric Blake 2012-11-01 20:10 ` [Qemu-devel] " Eric Blake 2012-11-02 5:24 ` Isaku Yamahata 2012-11-02 5:24 ` [Qemu-devel] " Isaku Yamahata 2012-11-02 15:22 ` Eric Blake 2012-11-02 15:22 ` Eric Blake 2012-10-30 8:33 ` [PATCH v3 28/35] arch_init: factor out setting last_block, last_offset Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 29/35] postcopy/outgoing: add movebg mode(-m) to migration command Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-11-01 20:15 ` Eric Blake 2012-11-01 20:15 ` [Qemu-devel] " Eric Blake 2012-10-30 8:33 ` [PATCH v3 30/35] arch_init: factor out ram_load Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 31/35] arch_init: export ram_save_iterate() Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 32/35] postcopy: pre+post optimization incoming side Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 33/35] arch_init: export migration_bitmap_sync and helper method to get bitmap Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 8:33 ` [PATCH v3 34/35] postcopy/outgoing: introduce precopy_count parameter Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-11-01 21:20 ` Eric Blake 2012-11-01 21:20 ` Eric Blake 2012-10-30 8:33 ` [PATCH v3 35/35] postcopy: pre+post optimization outgoing side Isaku Yamahata 2012-10-30 8:33 ` [Qemu-devel] " Isaku Yamahata 2012-10-30 18:53 ` [PATCH v3 00/35] postcopy live migration Benoit Hudzia 2012-10-30 18:53 ` [Qemu-devel] " Benoit Hudzia 2012-10-31 3:25 ` Isaku Yamahata 2012-10-31 3:25 ` Isaku Yamahata 2012-10-30 18:55 ` Benoit Hudzia 2012-10-30 18:55 ` [Qemu-devel] " Benoit Hudzia 2012-11-06 11:04 ` Orit Wasserman 2012-11-06 11:04 ` [Qemu-devel] " Orit Wasserman
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=ff9579ff48a2cba1ebf5fd97a6dde4246ea1175d.1351582535.git.yamahata@valinux.co.jp \ --to=yamahata@valinux.co.jp \ --cc=aarcange@redhat.com \ --cc=aliguori@us.ibm.com \ --cc=avi@redhat.com \ --cc=benoit.hudzia@gmail.com \ --cc=chegu_vinod@hp.com \ --cc=dlaor@redhat.com \ --cc=kvm@vger.kernel.org \ --cc=mdroth@linux.vnet.ibm.com \ --cc=owasserm@redhat.com \ --cc=pbonzini@redhat.com \ --cc=qemu-devel@nongnu.org \ --cc=quintela@redhat.com \ --cc=satoshi.itoh@aist.go.jp \ --cc=stefanha@gmail.com \ --cc=t.hirofuchi@aist.go.jp \ --cc=yoshikawa.takuya@oss.ntt.co.jp \ /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.