[libvirt] RFC / Braindump: public APIs needing data streams

Richard W.M. Jones rjones at redhat.com
Tue May 26 17:57:18 UTC 2009


FWIW this is the libguestfs RPC protocol:

http://et.redhat.com/~rjones/libguestfs/guestfs.3.html#communication_protocol
http://git.et.redhat.com/?p=libguestfs.git;a=blob;f=src/guestfs_protocol.x;hb=HEAD

It's not directly relevant because at present the server is single-
threaded and answers calls in order.

These are the relevant points of the file transfer system:

- At the API level, you pass in filenames.  The caller is responsible
for creating a named pipe in the filesystem, or passing in names like
"/dev/fd/N".

- File transfers are sent using chunked encoding.  The key was to
allow cancellation *initiated from either side* (not as easy as it
seems).  So if an error occurs at either end, the transfer can be
stopped almost immediately, and synchronization can be reestablished.
The details are in the link above.

Rich.

-- 
Richard Jones, Emerging Technologies, Red Hat  http://et.redhat.com/~rjones
virt-p2v converts physical machines to virtual machines.  Boot with a
live CD or over the network (PXE) and turn machines into Xen guests.
http://et.redhat.com/~rjones/virt-p2v




More information about the libvir-list mailing list