Am 20.10.2014 um 17:09 hat Zhang Haoyu geschrieben:
> >> Hi,
> >>
> >> I noticed that bdrv_drain_all is performed in load_vmstate before
> bdrv_snapshot_goto,
> >> and bdrv_drain_all is performed in qmp_transaction before
> internal_snapshot_prepare,
> >> so is it also neccesary to perform bdrv_drain_all in savevm and delvm?
> >
> >Definitely yes for savevm. do_savevm() calls it indirectly via
> >vm_stop(), so that part looks okay.
> >
> Yes, you are right.
> 
> >delvm doesn't affect the currently running VM, and therefore doesn't
> >interfere with guest requests that are in flight. So I think that a
> >bdrv_drain_all() isn't needed there.
> >
> I'm worried about that there are still pending IOs while deleting snapshot,
> then is it possible that there is concurrency problem between the
> process of deleting snapshot
> and the coroutine of io read/write(bdrv_co_do_rw) invoked by the
> pending IOs?
> This coroutine is also in main thread.
> Am I missing something?

What kind of concurrency problem are you thinking of?

I do see that there might be a chance of concurrency, but that doesn't
automatically mean the requests are conflicting.

Would you feel better with taking s->lock in qcow2_snapshot_delete()?
This might actually be a valid concern.

Kevin

Reply via email to