From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NrvfN-0004Yq-MP for qemu-devel@nongnu.org; Wed, 17 Mar 2010 12:00:17 -0400 Received: from [199.232.76.173] (port=47306 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NrvfN-0004YS-02 for qemu-devel@nongnu.org; Wed, 17 Mar 2010 12:00:17 -0400 Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1NrvfM-0001TA-0z for qemu-devel@nongnu.org; Wed, 17 Mar 2010 12:00:16 -0400 Received: from e33.co.us.ibm.com ([32.97.110.151]:41182) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NrvfL-0001Sl-Lw for qemu-devel@nongnu.org; Wed, 17 Mar 2010 12:00:15 -0400 Received: from d03relay02.boulder.ibm.com (d03relay02.boulder.ibm.com [9.17.195.227]) by e33.co.us.ibm.com (8.14.3/8.13.1) with ESMTP id o2HFubJj026306 for ; Wed, 17 Mar 2010 09:56:37 -0600 Received: from d03av01.boulder.ibm.com (d03av01.boulder.ibm.com [9.17.195.167]) by d03relay02.boulder.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id o2HG0Ctn199076 for ; Wed, 17 Mar 2010 10:00:12 -0600 Received: from d03av01.boulder.ibm.com (loopback [127.0.0.1]) by d03av01.boulder.ibm.com (8.14.3/8.13.1/NCO v10.0 AVout) with ESMTP id o2HG02H6030819 for ; Wed, 17 Mar 2010 10:00:02 -0600 Message-ID: <4BA0FC80.4040105@linux.vnet.ibm.com> Date: Wed, 17 Mar 2010 11:00:00 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH] balloon: Do not save VM state wrt asynchronous virtio operations References: <1268160849.2579.56.camel@aglitke> In-Reply-To: <1268160849.2579.56.camel@aglitke> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Adam Litke Cc: qemu-devel@nongnu.org, Anthony Liguori , Juan Quintela , Avi Kivity , Luiz Capitulino On 03/09/2010 12:54 PM, Adam Litke wrote: > When working with the VM state (for loadvm/savevm and migration), it is not > valid to load and store pointers since the validity of those pointers cannot be > assured in the new qemu address space. Therefore, virtio_balloon_save() and > virtio_balloon_load() must not handle the stats-related fields in struct > VirtIOBalloon. > > If a memory stats request is in-flight at the time of a migration or savevm, > the request will not complete and should be resubmitted once migration or > loadvm completes. Note that this extremely small race window can only be > triggered using QMP so it is not possible to hang the user monitor. > > Signed-off-by: Adam Litke > Applied. Thanks. Regards, Anthony Liguori > diff --git a/hw/virtio-balloon.c b/hw/virtio-balloon.c > index 086d9d1..6d12024 100644 > --- a/hw/virtio-balloon.c > +++ b/hw/virtio-balloon.c > @@ -261,10 +261,6 @@ static void virtio_balloon_save(QEMUFile *f, void *opaque) > > qemu_put_be32(f, s->num_pages); > qemu_put_be32(f, s->actual); > - qemu_put_buffer(f, (uint8_t *)&s->stats_vq_elem, sizeof(VirtQueueElement)); > - qemu_put_buffer(f, (uint8_t *)&s->stats_vq_offset, sizeof(size_t)); > - qemu_put_buffer(f, (uint8_t *)&s->stats_callback, sizeof(MonitorCompletion)); > - qemu_put_buffer(f, (uint8_t *)&s->stats_opaque_callback_data, sizeof(void)); > } > > static int virtio_balloon_load(QEMUFile *f, void *opaque, int version_id) > @@ -278,11 +274,6 @@ static int virtio_balloon_load(QEMUFile *f, void *opaque, int version_id) > > s->num_pages = qemu_get_be32(f); > s->actual = qemu_get_be32(f); > - qemu_get_buffer(f, (uint8_t *)&s->stats_vq_elem, sizeof(VirtQueueElement)); > - qemu_get_buffer(f, (uint8_t *)&s->stats_vq_offset, sizeof(size_t)); > - qemu_get_buffer(f, (uint8_t *)&s->stats_callback, sizeof(MonitorCompletion)); > - qemu_get_buffer(f, (uint8_t *)&s->stats_opaque_callback_data, sizeof(void)); > - > return 0; > } > > > >