On Mon, Aug 15, 2011 at 09:58:15AM +0200, Jiri Denemark wrote: > --- > src/qemu/qemu_migration.c | 50 +++++++------------------------------------- > 1 files changed, 8 insertions(+), 42 deletions(-) > > diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c > index 1cabbe0..c29ea9e 100644 > --- a/src/qemu/qemu_migration.c > +++ b/src/qemu/qemu_migration.c > @@ -42,6 +42,7 @@ > #include "fdstream.h" > #include "uuid.h" > #include "locking/domain_lock.h" > +#include "rpc/virnetsocket.h" > > > #define VIR_FROM_THIS VIR_FROM_QEMU > @@ -1618,9 +1619,8 @@ static int doTunnelMigrate(struct qemud_driver *driver, > unsigned long resource) > { > qemuDomainObjPrivatePtr priv = vm->privateData; > - int qemu_sock = -1; > - struct sockaddr_un sa_qemu; > char *unixfile = NULL; > + virNetSocketPtr sock = NULL; > int ret = -1; > qemuMigrationSpec spec; > > @@ -1642,45 +1642,14 @@ static int doTunnelMigrate(struct qemud_driver > *driver, > goto cleanup; > } > > - qemu_sock = socket(AF_UNIX, SOCK_STREAM, 0); > - if (qemu_sock < 0) { > - virReportSystemError(errno, "%s", > - _("cannot open tunnelled migration socket")); > - goto cleanup; > - } > - memset(&sa_qemu, 0, sizeof(sa_qemu)); > - sa_qemu.sun_family = AF_UNIX; > - if (virStrcpy(sa_qemu.sun_path, unixfile, > - sizeof(sa_qemu.sun_path)) == NULL) { > - qemuReportError(VIR_ERR_INTERNAL_ERROR, > - _("Unix socket '%s' too big for destination"), > - unixfile); > + if (virNetSocketNewListenUNIX(unixfile, 0700, > + driver->user, driver->group, &sock) < 0 || > + virNetSocketListen(sock, 1) < 0)
If we are sure the errors will be properly reported back in called functions, okay > goto cleanup; > - } > - unlink(unixfile); > - if (bind(qemu_sock, (struct sockaddr *)&sa_qemu, sizeof(sa_qemu)) < 0) { > - virReportSystemError(errno, > - _("Cannot bind to unix socket '%s' for > tunnelled migration"), > - unixfile); > - goto cleanup; > - } > - if (listen(qemu_sock, 1) < 0) { > - virReportSystemError(errno, > - _("Cannot listen on unix socket '%s' for > tunnelled migration"), > - unixfile); > - goto cleanup; > - } > - > - if (chown(unixfile, driver->user, driver->group) < 0) { > - virReportSystemError(errno, > - _("Cannot change unix socket '%s' owner"), > - unixfile); > - goto cleanup; > - } > > spec.destType = MIGRATION_DEST_UNIX; > spec.dest.unics.file = unixfile; > - spec.dest.unics.sock = qemu_sock; > + spec.dest.unics.sock = virNetSocketGetFD(sock); > spec.fwdType = MIGRATION_FWD_STREAM; > spec.fwd.stream = st; > > @@ -1688,11 +1657,8 @@ static int doTunnelMigrate(struct qemud_driver *driver, > cookieoutlen, flags, resource, &spec); > > cleanup: > - VIR_FORCE_CLOSE(qemu_sock); > - if (unixfile) { > - unlink(unixfile); > - VIR_FREE(unixfile); > - } > + virNetSocketFree(sock); > + VIR_FREE(unixfile); > > return ret; > } Looks lovely except that a code removing so many lines on migration code souds too good to be true <grin/> ACK, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ dan...@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list