From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49987) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YsqPJ-0007C4-8k for qemu-devel@nongnu.org; Thu, 14 May 2015 06:30:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YsqPF-0003sA-Ux for qemu-devel@nongnu.org; Thu, 14 May 2015 06:30:25 -0400 Received: from e06smtp10.uk.ibm.com ([195.75.94.106]:54348) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YsqPF-0003pP-KG for qemu-devel@nongnu.org; Thu, 14 May 2015 06:30:21 -0400 Received: from /spool/local by e06smtp10.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 14 May 2015 11:30:19 +0100 Received: from b06cxnps4075.portsmouth.uk.ibm.com (d06relay12.portsmouth.uk.ibm.com [9.149.109.197]) by d06dlp02.portsmouth.uk.ibm.com (Postfix) with ESMTP id C9629219005E for ; Thu, 14 May 2015 11:29:58 +0100 (BST) Received: from d06av09.portsmouth.uk.ibm.com (d06av09.portsmouth.uk.ibm.com [9.149.37.250]) by b06cxnps4075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id t4EAUHjf29687902 for ; Thu, 14 May 2015 10:30:17 GMT Received: from d06av09.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av09.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id t4EAUHws002242 for ; Thu, 14 May 2015 04:30:17 -0600 Message-ID: <55547938.4020201@de.ibm.com> Date: Thu, 14 May 2015 12:30:16 +0200 From: Christian Borntraeger MIME-Version: 1.0 References: <1431528122-50960-1-git-send-email-cornelia.huck@de.ibm.com> <1431528122-50960-2-git-send-email-cornelia.huck@de.ibm.com> <20150513165438-mutt-send-email-mst@redhat.com> <20150513170335.2d662124.cornelia.huck@de.ibm.com> <20150513180005-mutt-send-email-mst@redhat.com> <55539E7C.90004@de.ibm.com> <20150513234516-mutt-send-email-mst@redhat.com> <55546945.4050400@de.ibm.com> <20150514112845-mutt-send-email-mst@redhat.com> In-Reply-To: <20150514112845-mutt-send-email-mst@redhat.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH RFC 1/1] virtio: migrate config_vector List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: Cornelia Huck , qemu-devel@nongnu.org, jjherne@linux.vnet.ibm.com Am 14.05.2015 um 11:36 schrieb Michael S. Tsirkin: > On Thu, May 14, 2015 at 11:22:13AM +0200, Christian Borntraeger wrote: >> Am 13.05.2015 um 23:47 schrieb Michael S. Tsirkin: >>> On Wed, May 13, 2015 at 08:57:00PM +0200, Christian Borntraeger wrote: >>>> Am 13.05.2015 um 18:14 schrieb Michael S. Tsirkin: >>>>>> - AFAICS, there's no easy way to add transport-specific subsections - >>>>>> and simply adding config_vector in ccw would break compatibility >>>>> >>>>> subsections break compatibility too. The only way around that is to set >>>>> a flag to skip migrating config_vector for old machine types. >>>> >>>> My main concern is about undetected compatibility issues. A subsection will >>>> tell the user that something went wrong. What happens if we just add a new >>>> qemu_put_byte in the stream. Will the savevm core always detect that we have >>>> too many or not enough bytes? If yes, adding new stuff in the stream will >>>> always be detected in some way as error we can go with just adding >>>> qemu_put_be16/qemu_get_be16 in virtio_ccw_save_config/virtio_ccw_load_config. >>>> Old/new QEMUs will then not be compatible - but thats probably ok as long as it >>>> errors out. >>>> >>>> My understanding was that we do not have a guarentee that this will be >>>> detected all the time and having random junk in some variables is a debugging >>>> nightmare. Is that correct? >>>> >>>> >>>> Christian >>> >>> It's not too bad - normally there's a bunch of strings that >>> helps you find out what's going on. >>> But if you really care about debuggability of migration streams, help move >>> forward dgilbert's RFC that switched to a self-delimiting format. >>> Just piling up random hacks in virtio seems like a wrong approach. >>> >> >> Thats not my question. PLEASE try to understand my question. >> I want a hard stop if migration changes in incompatible ways. >> If adding a qemu_put_byte in virtio_ccw gets detected we can just fix >> virtio_ccw AS YOU SUGGESTED. I just want to know if I can rely on that >> or not. >> >> Christian > > I answered exactly this question but let me try to spell the answer > out a bit more. > > There are three answers: > 1. Yes, it's sure to get detected because everything gets shifted > and then you get an unexpected string instead of next device name. Ok got it. So simply adding a qemu_put/get_byte will always fail the migration and we can just fixup virtio-ccw.c at the cost of being not migrateable between versions before/after that change. Thanks Christian > 2. If you want a more generic way to detect this, then please work > on changing format for devices generally so each device > section has a byte length attached to it. Then we know that > when we make changes, they are detected as device will end > earlier/later than expected. > 3. You can have a different workaround: add property "skip config vec > on migration" and set it for old spapr machine types. > old types continue losing config vec; new ones work better. >