From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35354) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YaxFS-0006hf-L2 for qemu-devel@nongnu.org; Wed, 25 Mar 2015 22:10:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YaxFP-0003aM-WF for qemu-devel@nongnu.org; Wed, 25 Mar 2015 22:10:18 -0400 Received: from ozlabs.org ([2401:3900:2:1::2]:45265) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YaxFP-0003Zg-BX for qemu-devel@nongnu.org; Wed, 25 Mar 2015 22:10:15 -0400 Date: Thu, 26 Mar 2015 12:35:35 +1100 From: David Gibson Message-ID: <20150326013535.GG28039@voom.redhat.com> References: <1424883128-9841-1-git-send-email-dgilbert@redhat.com> <1424883128-9841-21-git-send-email-dgilbert@redhat.com> <20150313010058.GZ11973@voom.redhat.com> <20150313101953.GA2486@work-vm> <20150316061840.GE5741@voom.redhat.com> <20150320123759.GE2468@work-vm> <20150323022542.GG25043@voom.fritz.box> <20150324200414.GG2332@work-vm> <20150324223227.GK25043@voom.fritz.box> <20150325150024.GH2313@work-vm> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="/Zw+/jwnNHcBRYYu" Content-Disposition: inline In-Reply-To: <20150325150024.GH2313@work-vm> Subject: Re: [Qemu-devel] [PATCH v5 20/45] Modify savevm handlers for postcopy List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert" Cc: aarcange@redhat.com, yamahata@private.email.ne.jp, quintela@redhat.com, qemu-devel@nongnu.org, amit.shah@redhat.com, pbonzini@redhat.com, yanghy@cn.fujitsu.com --/Zw+/jwnNHcBRYYu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Mar 25, 2015 at 03:00:29PM +0000, Dr. David Alan Gilbert wrote: > * David Gibson (david@gibson.dropbear.id.au) wrote: > > On Tue, Mar 24, 2015 at 08:04:14PM +0000, Dr. David Alan Gilbert wrote: > > > * David Gibson (david@gibson.dropbear.id.au) wrote: > > > > On Fri, Mar 20, 2015 at 12:37:59PM +0000, Dr. David Alan Gilbert wr= ote: > > > > > * David Gibson (david@gibson.dropbear.id.au) wrote: > > > > > > On Fri, Mar 13, 2015 at 10:19:54AM +0000, Dr. David Alan Gilber= t wrote: > > > > > > > * David Gibson (david@gibson.dropbear.id.au) wrote: > > > > > > > > On Wed, Feb 25, 2015 at 04:51:43PM +0000, Dr. David Alan Gi= lbert (git) wrote: > > > > > > > > > From: "Dr. David Alan Gilbert" > > > > > > > > >=20 > > > > > > > > > Modify save_live_pending to return separate postcopiable = and > > > > > > > > > non-postcopiable counts. > > > > > > > > >=20 > > > > > > > > > Add 'can_postcopy' to allow a device to state if it can p= ostcopy > > > > > > > >=20 > > > > > > > > What's the purpose of the can_postcopy callback? There are= no callers > > > > > > > > in this patch - is it still necessary with the change to > > > > > > > > save_live_pending? > > > > > > >=20 > > > > > > > The patch 'qemu_savevm_state_complete: Postcopy changes' uses > > > > > > > it in qemu_savevm_state_postcopy_complete and qemu_savevm_sta= te_complete > > > > > > > to decide which devices must be completed at that point. > > > > > >=20 > > > > > > Couldn't they check for non-zero postcopiable state from > > > > > > save_live_pending instead? > > > > >=20 > > > > > That would be a bit weird. > > > > >=20 > > > > > At the moment for each device we call the: > > > > > save_live_setup method (from qemu_savevm_state_begin) > > > > >=20 > > > > > 0...multiple times we call: > > > > > save_live_pending > > > > > save_live_iterate > > > > >=20 > > > > > and then we always call > > > > > save_live_complete > > > > >=20 > > > > >=20 > > > > > To my mind we have to call save_live_complete for any device > > > > > that we've called save_live_setup on (maybe it allocated something > > > > > in _setup that it clears up in _complete). > > > > >=20 > > > > > save_live_pending could perfectly well return 0 remaining at the = end of > > > > > the migrate for our device, and thus if we used that then we woul= dn't > > > > > call save_live_complete. > > > >=20 > > > > Um.. I don't follow. I was suggesting that at the precopy->postcopy > > > > transition point you call save_live_complete for everything that > > > > reports 0 post-copiable state. > > > >=20 > > > >=20 > > > > Then again, a different approach would be to split the > > > > save_live_complete hook into (possibly NULL) "complete precopy" and > > > > "complete postcopy" hooks. The core would ensure that every chunk = of > > > > state has both completion hooks called (unless NULL). That might a= lso > > > > address my concerns about the no longer entirely accurate > > > > save_live_complete function name. > > >=20 > > > OK, that one I prefer. Are you OK with: > > > qemu_savevm_state_complete_precopy > > > calls -> save_live_complete_precopy > > >=20 > > > qemu_savevm_state_complete_postcopy > > > calls -> save_live_complete_postcopy > > >=20 > > > ? > >=20 > > Sounds ok to me. Fwiw, I was thinking that both the complete_precopy > > and complete_postcopy hooks should always be called. For a > > non-postcopy migration, the postcopy hooks would just be called > > immediately after the precopy hooks. >=20 > OK, I've made the change as described in my last mail; but I haven't call= ed > the complete_postcopy hook in the precopy case. If it was as simple as m= aking > all devices use one or the other then it would work, however there are > existing (precopy) assumptions about ordering of device state on the wire= that > I want to be careful not to alter; for example RAM must come first is the= one > I know. It's not obvious to me why that matters to the hook scheme. --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --/Zw+/jwnNHcBRYYu Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJVE2JnAAoJEGw4ysog2bOSY6MP/iq2sBfzxrl2DkJuP/siWxs1 RtdEcspdB0OKJQuFNyreHdSqRktqxUivXZ62jRH6o3BDjOfKszFtNlFU4QnT/9B4 CLYa2zkk6l/DuqsJ2ru5K+p6TBDwu3u/C8BcvHL8nUdxwwmF/MTIVr4IzvYAD1Rb UOhP60w2f7uGLOddTE+qrp6GS4GihCpNuu+9H1FHvZU+j8K4f2YZonCXNhpLMBVY Q88Zfm1lH5dPrqqeEACdfPYA1q3pL7/eT8QxLipR0KveArelYCiFOq+oR6iSuXkZ UAD51kNwky7MjA6MdhI59PyUAqnuTrcK43uGKfz0pYC5thayX1RObUcJmNCRhLbz Yx6TYE8rZR+GF6dSC3MUTloMtblMroWyGdQ08r1Awd/hu85IHYvv+sHuD0bMeW3I r56xlbhHzJx4AwxskGDFcOpk8OKP9kweAknob948FXNNstidIskbVJ/exwp5cuUh pHg0Hl74DFXflYSez8bXQsGFdV9ZgJB6YR87V+pKMO9fM5MW8V5ymodyB6H/pqt6 kzeS2N4H/hh0qMYjsyxelvCWyyKMx5vxO778TXsUCPTUSA14jonlTSVk2AyPoOF7 2UJ47d4oZ888pnER/WHyejig5kn1PAR3ImdaJRoEWfNIQ89RuNPcqWO3uTJuObFZ 1smxEM0OuvNwppULQ+dm =ImFS -----END PGP SIGNATURE----- --/Zw+/jwnNHcBRYYu--