On Mon, Sep 27, 2010 at 11:12 AM, Avi Kivity <a...@redhat.com> wrote: > On 09/23/2010 05:41 PM, Stefan Hajnoczi wrote: >> >> This patch implements the read/write state machine. Operations are >> fully asynchronous and multiple operations may be active at any time. >> >> Allocating writes are serialized to make metadata updates consistent. >> For example, two write requests to the same unallocated cluster should >> only allocate the new cluster once and then update it, rather than >> racing to allocate the cluster twice and losing on of the writes. This >> scheme can be made more fine-grained in the future so that independent >> metadata updates can be active at the same time. >> > > A comment re prefill-postfill - it seems to generate excessive I/O, for > example an allocating write into the middle of a cluster will generate two > reads (if a backing file exists) and three writes. It would be simpler and > more efficient to read the backing cluster, splice in the guest iovec, and > issue a single write. That is one read and two writes fewer. > > (assuming I read the code right)
Yes, you read it correctly. I haven't tried out other write-out approaches yet but it is something I've been thinking about. For a first version of QED the current approach works but we should be able to get better performance with an improved write-out strategy. Stefan