FYI I now have a VDDK extents function which now works and is tested
against a real server on real guests:

  
https://github.com/rwmjones/nbdkit/commit/b327a79ee3fa0af0fe27d5d18ac7b5f44a7c243e

There were quite a lot of changes:

 - The offset and length of the hole before each block was
   plain wrong: fixed.

 - I needed to add the implicit hole after the list of blocks
   returned by QueryAllocatedBlocks.

 - Don't consider req_one until we've got past the initial offset.

 - Centralise the add_extents code into one function and add
   a debug flag (-D) so we can debug it.

Unfortunately qemu's habit of setting req_one on every request hurts
performance quite a lot, because calling QueryAllocatedBlocks is very
expensive.  You end up having to call QAB before each pread and
constantly re-requesting data which we've already asked for.  We might
cache the QAB output but that's complex and hairy.

Rich.

-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-top is 'top' for virtual machines.  Tiny program with many
powerful monitoring features, net stats, disk stats, logging, etc.
http://people.redhat.com/~rjones/virt-top

_______________________________________________
Libguestfs mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/libguestfs

Reply via email to