[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