qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] AioContext, IOthread and Block migration thread


From: Stefan Hajnoczi
Subject: Re: [Qemu-devel] AioContext, IOthread and Block migration thread
Date: Tue, 27 Aug 2013 09:52:11 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Mon, Aug 26, 2013 at 10:07:23AM -0500, Yaodong Yang wrote:
> 1. Is it true that all the requests to disk images need to go through 
> function bdrv_co_do_readv() or bdrv_co_do_writev()?

Yes, read/write requests go through those functions.

> 2. In block-migration thread, the bdrv_co_do_readv is also called to read 
> blocks from disk images, in order to finish migration. How do migration 
> thread and IOthread cooperate with each other? there is an coroutine created 
> inside migration thread and a new botoom half created for this purpose, but I 
> do not understand well about it. Could someone explain it for me?

QEMU has a global mutex (big lock) that is used to protect shared data:

/* In migration thread: */
qemu_mutex_lock_iothread();
bdrv_*(bs, ...);
qemu_mutex_unlock_iothread();

> 3. What is the meaning of copy on read ?

Copy-on-read means that an image file is populated when read requests
are processed.

It's used together with backing files:

  template.img <- vm001.qcow2

In the beginning vm001.qcow2 might be empty so all reads go to
template.img.  When copy-on-read is enabled, data read from template.img
will be written to vm001.qcow2.  The next time a read is made to the
same sectors they can be fetched from vm001.qcow2 instead.

This is a useful feature for migrating (copying) an image to a new file
system while the guest is still running.  It can also be used to reduce
network load when template.img is on NFS.

Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]