Message ID | 1377069536-12658-3-git-send-email-lilei@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
Il 21/08/2013 09:18, Lei Li ha scritto: > Export qemu_save_device_state() for localhost migration. > > Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> > --- > include/sysemu/sysemu.h | 1 + > savevm.c | 7 ++++++- > 2 files changed, 7 insertions(+), 1 deletions(-) > > diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h > index d7a77b6..f1f15f4 100644 > --- a/include/sysemu/sysemu.h > +++ b/include/sysemu/sysemu.h > @@ -80,6 +80,7 @@ int qemu_savevm_state_iterate(QEMUFile *f); > void qemu_savevm_state_complete(QEMUFile *f); > void qemu_savevm_state_cancel(void); > uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size); > +int qemu_save_device_state(QEMUFile *f); > int qemu_loadvm_state(QEMUFile *f); > > /* SLIRP */ > diff --git a/savevm.c b/savevm.c > index 03fc4d9..f89e979 100644 > --- a/savevm.c > +++ b/savevm.c > @@ -2049,7 +2049,12 @@ static int qemu_savevm_state(QEMUFile *f) > return ret; > } > > -static int qemu_save_device_state(QEMUFile *f) > +/** > + * Save all of the device states to stream QEMUFile > + * > + * Return negative if there has been an error > + **/ > +int qemu_save_device_state(QEMUFile *f) > { > SaveStateEntry *se; > > This should also not be needed. Device state will be sent on the Unix socket, while page data will be sent on the pipe. I suggest you start from scratch. Do a simple RFC series that does normal live migration with dirty bitmap, but uses a side channel (pipe passed via SCM_RIGHTS) for RAM. This will ensure you get the hooks right. Then you have two things to work on: (1) make the capability enforce non-live migration, probably by adding another RunState and adding it to runstate_needs_reset; (2) improve the hooks to use vmsplice. Paolo
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h index d7a77b6..f1f15f4 100644 --- a/include/sysemu/sysemu.h +++ b/include/sysemu/sysemu.h @@ -80,6 +80,7 @@ int qemu_savevm_state_iterate(QEMUFile *f); void qemu_savevm_state_complete(QEMUFile *f); void qemu_savevm_state_cancel(void); uint64_t qemu_savevm_state_pending(QEMUFile *f, uint64_t max_size); +int qemu_save_device_state(QEMUFile *f); int qemu_loadvm_state(QEMUFile *f); /* SLIRP */ diff --git a/savevm.c b/savevm.c index 03fc4d9..f89e979 100644 --- a/savevm.c +++ b/savevm.c @@ -2049,7 +2049,12 @@ static int qemu_savevm_state(QEMUFile *f) return ret; } -static int qemu_save_device_state(QEMUFile *f) +/** + * Save all of the device states to stream QEMUFile + * + * Return negative if there has been an error + **/ +int qemu_save_device_state(QEMUFile *f) { SaveStateEntry *se;
Export qemu_save_device_state() for localhost migration. Signed-off-by: Lei Li <lilei@linux.vnet.ibm.com> --- include/sysemu/sysemu.h | 1 + savevm.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletions(-)