From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56122) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VC6Mf-0006TZ-Vf for qemu-devel@nongnu.org; Wed, 21 Aug 2013 07:14:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VC6Ma-00085s-08 for qemu-devel@nongnu.org; Wed, 21 Aug 2013 07:14:13 -0400 Received: from mx1.redhat.com ([209.132.183.28]:28108) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VC6MZ-00085i-Po for qemu-devel@nongnu.org; Wed, 21 Aug 2013 07:14:07 -0400 Message-ID: <5214A0CD.6060804@redhat.com> Date: Wed, 21 Aug 2013 13:13:17 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1377069536-12658-1-git-send-email-lilei@linux.vnet.ibm.com> <1377069536-12658-3-git-send-email-lilei@linux.vnet.ibm.com> In-Reply-To: <1377069536-12658-3-git-send-email-lilei@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 02/18] savevm: export qemu_save_device_state() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Lei Li Cc: aarcange@redhat.com, aliguori@us.ibm.com, quintela@redhat.com, qemu-devel@nongnu.org, mrhines@linux.vnet.ibm.com, lagarcia@br.ibm.com, rcj@linux.vnet.ibm.com Il 21/08/2013 09:18, Lei Li ha scritto: > Export qemu_save_device_state() for localhost migration. > > Signed-off-by: Lei Li > --- > 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