From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: [PATCH] savevm: check vmsd for migratability status (v2) Date: Tue, 29 Apr 2014 21:39:03 -0300 Message-ID: <20140430003903.GA23414@amt.cnet> References: <20140423182002.441209839@amt.cnet> <20140423182539.391512909@amt.cnet> <20140423190941.GN3363@otherpad.lan.raisama.net> <20140423210444.GA4305@amt.cnet> <20140424192159.GR3363@otherpad.lan.raisama.net> <20140424213242.GA29412@amt.cnet> <20140425203808.GW3363@otherpad.lan.raisama.net> <20140425224709.GA27753@amt.cnet> <20140428203624.GB3363@otherpad.lan.raisama.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, qemu-devel@nongnu.org, Paolo Bonzini , Andreas =?iso-8859-1?Q?F=E4rber?= , Igor Mammedov To: Eduardo Habkost Return-path: Received: from mx1.redhat.com ([209.132.183.28]:24174 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751521AbaD3AjY (ORCPT ); Tue, 29 Apr 2014 20:39:24 -0400 Content-Disposition: inline In-Reply-To: <20140428203624.GB3363@otherpad.lan.raisama.net> Sender: kvm-owner@vger.kernel.org List-ID: Check vmsd for unmigratable field, allowing migratibility status to be modified after vmstate_register. Signed-off-by: Marcelo Tosatti diff --git a/savevm.c b/savevm.c index da8aa24..c578e42 100644 --- a/savevm.c +++ b/savevm.c @@ -232,7 +232,6 @@ typedef struct SaveStateEntry { const VMStateDescription *vmsd; void *opaque; CompatEntry *compat; - int no_migrate; int is_ram; } SaveStateEntry; @@ -292,7 +291,6 @@ int register_savevm_live(DeviceState *dev, se->ops = ops; se->opaque = opaque; se->vmsd = NULL; - se->no_migrate = 0; /* if this is a live_savem then set is_ram */ if (ops->save_live_setup != NULL) { se->is_ram = 1; @@ -383,7 +381,6 @@ int vmstate_register_with_alias_id(DeviceState *dev, int instance_id, se->opaque = opaque; se->vmsd = vmsd; se->alias_id = alias_id; - se->no_migrate = vmsd->unmigratable; if (dev) { char *id = qdev_get_dev_path(dev); @@ -452,7 +449,7 @@ bool qemu_savevm_state_blocked(Error **errp) SaveStateEntry *se; QTAILQ_FOREACH(se, &savevm_handlers, entry) { - if (se->no_migrate) { + if (se->vmsd && se->vmsd->unmigratable) { error_setg(errp, "State blocked by non-migratable device '%s'", se->idstr); return true;