From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=43198 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PmiE7-0008QJ-UG for qemu-devel@nongnu.org; Tue, 08 Feb 2011 02:43:08 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PmiE6-0003f4-Se for qemu-devel@nongnu.org; Tue, 08 Feb 2011 02:43:07 -0500 Received: from mail-wy0-f173.google.com ([74.125.82.173]:62657) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PmiE6-0003es-Kr for qemu-devel@nongnu.org; Tue, 08 Feb 2011 02:43:06 -0500 Received: by wyg36 with SMTP id 36so5694630wyg.4 for ; Mon, 07 Feb 2011 23:43:05 -0800 (PST) Message-ID: <4D50F403.4000205@codemonkey.ws> Date: Tue, 08 Feb 2011 01:42:59 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] Re: new->old version migration References: <20110207160751.GC25106@redhat.com> <4D504925.3000807@codemonkey.ws> <20110207195315.GA28096@redhat.com> <4D505C92.5040904@codemonkey.ws> <20110207215203.GA28658@redhat.com> <4D50A90C.1060701@codemonkey.ws> <20110208064214.GB28096@redhat.com> In-Reply-To: <20110208064214.GB28096@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: Amit Shah , Alex Williamson , qemu list , Juan Quintela On 02/08/2011 12:42 AM, Michael S. Tsirkin wrote: > On Mon, Feb 07, 2011 at 08:23:08PM -0600, Anthony Liguori wrote: > >> On 02/07/2011 03:52 PM, Michael S. Tsirkin wrote: >> >>> How does it? We need to know we are saving in 0.13 >>> format and skip the new subsection, otherwise >>> 0.13 will see a subsection it does not recognize >>> and exit. >>> >> If you used subsections for flow control, presumably you would only >> send the new savevm data if you had data buffered. >> >> If you add a qdev property to enable/disable flow control, then if >> it's disabled, you naturally would never send the subsection because >> you'd never buffer data. So no explicit code is needed to support >> migration. >> > But the result is we get a new property that we can never remove > as any qdev property is part of interface. > > >> The difficult case is when you truly need to change the savevm >> version. I don't think we have a proper fix for this because >> versions are linear so the proposed patch certainly wouldn't be a >> good way to do it. if flow_control=0 causes savevm 3 to be used >> instead of 4, and then the next_feature=0 causes savevm 4 to be used >> instead of 5, the semantics of flow_control=0,next_feature=1 becomes >> problematic. >> >> But as long as the feature has isolated state, we can solve the >> problem robustly with subsections. >> >> Regards, >> >> Anthony Liguori >> > I see. I'm unhappy with the facts that > 1. if (feature) is spread all over the code instead > of just in migration > Yeah, but it's no different than say msi enablement. > 2. it is also obfuscated with if (flow_control) > instead of plain if (migrate to qemu< 0.14) > so removing it will be much harder > 3. this forces anyone who wants > a VM compatible with qemu 0.13 to also lose data, > even if migration to 0.13 is never attempted. > It depends on whether we consider flow control a feature or a bug. If it's a bug, then we have to bump the live migration version and then live with the compatibility breakage. Regards, Anthony Liguori >>> We also need API to add subsections without vmstate, >>> because virtio serial wasn't yet converted. >>> >>> >