From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:51064) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQ2X9-0007t7-VW for qemu-devel@nongnu.org; Mon, 14 Nov 2011 14:49:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RQ2X8-0006d2-DY for qemu-devel@nongnu.org; Mon, 14 Nov 2011 14:49:35 -0500 Received: from mail-vw0-f45.google.com ([209.85.212.45]:64608) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RQ2X8-0006cw-B9 for qemu-devel@nongnu.org; Mon, 14 Nov 2011 14:49:34 -0500 Received: by vws17 with SMTP id 17so6100109vws.4 for ; Mon, 14 Nov 2011 11:49:33 -0800 (PST) Message-ID: <4EC170C9.5060202@codemonkey.ws> Date: Mon, 14 Nov 2011 13:49:29 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1321113420-3252-1-git-send-email-aliguori@us.ibm.com> <1321113420-3252-5-git-send-email-aliguori@us.ibm.com> <4EC1214B.8050105@us.ibm.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 5/7] block: allow migration to work with image files (v2) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: quintela@redhat.com Cc: Kevin Wolf , Lucas Meneghel Rodrigues , Anthony Liguori , Stefan Hajnoczi , "Michael S. Tsirkin" , qemu-devel@nongnu.org, Avi Kivity On 11/14/2011 01:46 PM, Juan Quintela wrote: > Anthony Liguori wrote: >> On 11/14/2011 07:11 AM, Juan Quintela wrote: >>> >>>> diff --git a/cpus.c b/cpus.c >>>> index 82530c4..ae5ec99 100644 >>>> --- a/cpus.c >>>> +++ b/cpus.c >>>> @@ -398,6 +398,7 @@ static void do_vm_stop(RunState state) >>>> vm_state_notify(0, state); >>>> qemu_aio_flush(); >>>> bdrv_flush_all(); >>>> + bdrv_invalidate_cache_all(); >>>> monitor_protocol_event(QEVENT_STOP, NULL); >>>> } >>> >>> This is too much. Reopening all qcow2 images each time that we stop the >>> vm looks excesive, no? >> >> This general code came in via: >> >> http://mid.gmane.org/cover.1290613959.git.mst@redhat.com >> >> That series made migration stable after issuing a stop operation. I >> believe the justification was for debugging purposes or something like >> that. >> >> At any rate, invalidating the cache is part of what's required to make >> things stable. If you look at something like cache=unsafe, the only >> way the metadata will get flushed if via a bdrv_close since bdrv_flush >> is a nop. >> >> So this is needed as long as we care about supporting this use-case. > > Then we need a "proper" qcow2 invalidate call. Doing in qemu toplevel: > > (qemu)stop > > And now all your qcow2 block devices are closed, or perhaps failing to > re-open() looks too much to me (TM). > > Kevin? Look closely at the patch. It doesn't actually close()/open() anything. It just invokes the bdrv_close() routine which calls the free functions on the l1/l2 caching functions. bdrv_open() doesn't actually open anything (it assumes the file is already open. It just reads the header and metadata over again. For something that's basically a hack, it turned out to work very cleanly :-) Regards, Anthony Liguori > > Later, Juan. > >