From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:49672) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qoxta-0002pF-6q for qemu-devel@nongnu.org; Thu, 04 Aug 2011 09:23:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QoxtY-0002A8-VN for qemu-devel@nongnu.org; Thu, 04 Aug 2011 09:23:30 -0400 Received: from mail-yw0-f45.google.com ([209.85.213.45]:57408) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QoxtY-0002A4-Ly for qemu-devel@nongnu.org; Thu, 04 Aug 2011 09:23:28 -0400 Received: by ywb3 with SMTP id 3so1222266ywb.4 for ; Thu, 04 Aug 2011 06:23:28 -0700 (PDT) Message-ID: <4E3A9D4B.7090503@codemonkey.ws> Date: Thu, 04 Aug 2011 08:23:23 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1312384643-581-1-git-send-email-lcapitulino@redhat.com> <1312384643-581-4-git-send-email-lcapitulino@redhat.com> <4E3A915B.4030906@redhat.com> In-Reply-To: <4E3A915B.4030906@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 3/7] QemuState: Add additional states List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: qemu-devel@nongnu.org, Markus Armbruster , Luiz Capitulino , blauwirbel@gmail.com, jan.kiszka@web.de, avi@redhat.com, amit.shah@redhat.com On 08/04/2011 07:32 AM, Kevin Wolf wrote: > Am 04.08.2011 11:02, schrieb Markus Armbruster: >> Luiz Capitulino writes: >> >>> Currently, only vm_start() and vm_stop() change the VM state. That's, >>> the state is only changed when starting or stopping the VM. >>> >>> This commit adds the qemu_state_set() function, making it possible >>> to also do state transitions when qemu is stopped or running. >>> >>> Additional states are also added and the current state is stored. >>> This is going to be used by the next commits. >>> >>> Signed-off-by: Luiz Capitulino >>> --- >>> cpus.c | 1 + >>> migration.c | 8 +++++++- >>> sysemu.h | 10 +++++++++- >>> vl.c | 20 ++++++++++++++++++++ >>> 4 files changed, 37 insertions(+), 2 deletions(-) >>> >>> diff --git a/cpus.c b/cpus.c >>> index ebbb8b9..48e6ca1 100644 >>> --- a/cpus.c >>> +++ b/cpus.c >>> @@ -124,6 +124,7 @@ static void do_vm_stop(QemuState state) >>> cpu_disable_ticks(); >>> vm_running = 0; >>> pause_all_vcpus(); >>> + qemu_state_set(state); >>> vm_state_notify(0, state); >>> qemu_aio_flush(); >>> bdrv_flush_all(); >>> diff --git a/migration.c b/migration.c >>> index 9724ce0..8aacf64 100644 >>> --- a/migration.c >>> +++ b/migration.c >>> @@ -72,8 +72,11 @@ void process_incoming_migration(QEMUFile *f) >>> >>> incoming_expected = false; >>> >>> - if (autostart) >>> + if (autostart) { >>> vm_start(); >>> + } else { >>> + qemu_state_set(QSTATE_PRELAUNCH); >>> + } >>> } >>> >>> int do_migrate(Monitor *mon, const QDict *qdict, QObject **ret_data) >>> @@ -394,6 +397,9 @@ void migrate_fd_put_ready(void *opaque) >>> } >>> state = MIG_STATE_ERROR; >>> } >>> + if (state == MIG_STATE_COMPLETED) { >>> + qemu_state_set(QSTATE_POSTMIGRATE); >>> + } >>> s->state = state; >>> notifier_list_notify(&migration_state_notifiers, NULL); >>> } >>> diff --git a/sysemu.h b/sysemu.h >>> index 2c3ea3d..32c9abb 100644 >>> --- a/sysemu.h >>> +++ b/sysemu.h >>> @@ -11,16 +11,22 @@ >>> /* vl.c */ >>> >>> typedef enum { >>> + QSTATE_NOSTATE, >> >> QSTATE_NO_STATE? >> >>> QSTATE_DEBUG, /* qemu is running under gdb */ >>> + QSTATE_INMIGRATE, /* paused waiting for an incoming migration */ >> >> QSTATE_IN_MIGRATE? >> >>> QSTATE_INTERROR, /* paused due to an internal error */ >> >> QSTATE_PANICKED? >> >>> QSTATE_IOERROR, /* paused due to an I/O error */ >> >> QSTATE_IO_ERROR? >> >>> QSTATE_PAUSED, /* paused by the user (ie. the 'stop' command) */ >>> + QSTATE_POSTMIGRATE, /* paused following a successful migration */ >> >> QSTATE_POST_MIGRATE? >> >>> + QSTATE_PRELAUNCH, /* qemu was started with -S and haven't started */ >> >> QSTATE_PRE_LAUNCH? >> >>> QSTATE_PREMIGRATE, /* paused preparing to finish migrate */ >> >> QSTATE_PRE_MIGRATE? >> >>> QSTATE_RESTVM, /* paused restoring the VM state */ >>> + QSTATE_RESTVMFAILED, /* paused due to a failed attempt to load state */ >> >> QSTATE_RESTVM_FAILED? > > QSTATE_RESTORE_FAILED? > > It's hard to interpret RESTVM without having read the comment. Great suggestions! Regards, Anthony Liguori > > Kevin >