Anthony Liguori <anth...@codemonkey.ws> wrote: > On 09/12/2010 05:42 AM, Avi Kivity wrote: >> On 09/11/2010 05:04 PM, Anthony Liguori wrote: >>> This fixes a couple nasty problems relating to live migration. >>> >>> 1) When dealing with shared storage with weak coherence (i.e. NFS), >>> even if >>> we re-read, we may end up with undesired caching. By delaying >>> any reads >>> until we absolutely have to, we decrease the likelihood of any >>> undesirable >>> caching. >>> >>> 2) When dealing with copy-on-read, the local storage acts as a >>> cache. We need >>> to make sure to avoid any reads to avoid polluting the local cache. >>> >>> + >>> static void ide_identify(IDEState *s) >>> { >>> uint16_t *p; >>> @@ -105,6 +132,8 @@ static void ide_identify(IDEState *s) >>> return; >>> } >>> >>> + guess_geometry(s); >>> + >> >> This can cause a disk read, no? Shouldn't it be made asynchronous? > > Yes, it should. I'm not sure there's an easy way to make it > asynchronous though not because of the block layer but because of how > these functions are called. > >> >> Or just move it to just before the guest starts? > > We don't really have a notion of "guest starts" today although maybe > we should.
I agree that we should have more states. Expecting Migration/Migration done are quite special casses that are handled adhoc now. Having some state like: NeverRun will make trivial to have vm_start() do the right thing on the 1st run. Later, Juan. > Regards, > > Anthony Liguori