BTW, also available at https://github.com/berrange/qemu/tree/io-channel-migration-1
On Tue, Jan 12, 2016 at 11:43:54AM +0000, Daniel P. Berrange wrote: > This is a formal posting of patches that were previously > previewed at: > > FYI: https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg00829.html > > The primary goal of this series of patches is to support TLS on the > migration data channel. The bulk of the work in this series though, > is converting the various QEMUFile implementations to be baed on the > new QIOChannel framework. > > At the end of this current series there is just one remaining impl > of QEMUFileOps that is not based on QIOChannel - the one in savevm.c > that is using BlockDriverState. It would be possible to create a > QIOChannel wrapper around BlockDriverState too, at which point all > QEMUFile impls would be QIOChannel based. This would then let us > cut out the QEMUFileOps driver callbacks entirely and thus simply > code even more. This patch series is already too large, so I left > that for now. > > The first 6 patchs are some basic clean ups to QEMUFile code > > The 7th patch introduces the QIOChannel based QEMUFile impl > > Patches 8-14 convert the various migration protocols to use > the QIOChannel based QEMUFile impl. > > Patches 15-18 remove the now unused QEMUFile impls that do > not use QIOChanel > > Patches 19, 21 and 22 does some more cleanup > > Patch 20 achieves the original stated primary goal of adding > TLS encryption to the TCP migration backend. > > Overall we have a net win of deleting 500 lines of code, > despite adding more features, which is always nice. > > I testing unix, tcp, exec migrations. I don't have the ability > to test RDMA migration, and that's the patch I'm also least > confident about code quality of, so would appreciated some > independant testing of that one in particular. > > > Daniel P. Berrange (22): > s390: use FILE instead of QEMUFile for creating text file > migration: remove use of qemu_bufopen from vmstate tests > migration: ensure qemu_fflush() always writes full data amount > migration: split migration hooks out of QEMUFileOps > migration: introduce set_blocking function in QEMUFileOps > migration: force QEMUFile to blocking mode for outgoing migration > migration: introduce a new QEMUFile impl based on QIOChannel > migration: convert post-copy to use QIOChannelBuffer > migration: convert unix socket protocol to use QIOChannel > migration: convert tcp socket protocol to use QIOChannel > migration: convert fd socket protocol to use QIOChannel > migration: convert exec socket protocol to use QIOChannel > migration: convert RDMA to use QIOChannel interface > migration: convert savevm to use QIOChannel for writing to files > migration: delete QEMUFile buffer implementation > migration: delete QEMUSizedBuffer struct > migration: delete QEMUFile sockets implementation > migration: delete QEMUFile stdio implementation > migration: move definition of struct QEMUFile back into qemu-file.c > migration: support TLS encryption with TCP migration backend > migration: remove support for non-iovec based write handlers > migration: remove qemu_get_fd method from QEMUFile > > docs/migration.txt | 4 +- > hw/s390x/s390-skeys.c | 19 +- > include/migration/qemu-file.h | 57 ++--- > include/qemu/typedefs.h | 1 - > include/sysemu/sysemu.h | 2 +- > migration/Makefile.objs | 6 +- > migration/exec.c | 48 +++-- > migration/fd.c | 57 +++-- > migration/migration.c | 24 +-- > migration/qemu-file-buf.c | 463 > ----------------------------------------- > migration/qemu-file-channel.c | 201 ++++++++++++++++++ > migration/qemu-file-internal.h | 53 ----- > migration/qemu-file-stdio.c | 195 ----------------- > migration/qemu-file-unix.c | 324 ---------------------------- > migration/qemu-file.c | 110 +++++----- > migration/rdma.c | 256 ++++++++++++++--------- > migration/savevm.c | 57 ++--- > migration/tcp.c | 372 +++++++++++++++++++++++++++++---- > migration/unix.c | 103 +++++---- > qemu-options.hx | 7 +- > tests/Makefile | 6 +- > tests/test-vmstate.c | 55 ++--- > 22 files changed, 975 insertions(+), 1445 deletions(-) > delete mode 100644 migration/qemu-file-buf.c > create mode 100644 migration/qemu-file-channel.c > delete mode 100644 migration/qemu-file-internal.h > delete mode 100644 migration/qemu-file-stdio.c > delete mode 100644 migration/qemu-file-unix.c > > -- > 2.5.0 > Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|