On Mon, Aug 15, 2011 at 17:48:03 +0800, Daniel Veillard wrote:
On Mon, Aug 15, 2011 at 09:58:14AM +0200, Jiri Denemark wrote:
> The core of these two functions is very similar and most of it is even
> exactly the same. Factor out the core functionality into a separate
> function to remove code duplication and make further changes easier.
> ---
> src/qemu/qemu_migration.c | 499 ++++++++++++++++++++++-----------------------
> 1 files changed, 239 insertions(+), 260 deletions(-)
>
> diff --git a/src/qemu/qemu_migration.c b/src/qemu/qemu_migration.c
> index 4d0e062..1cabbe0 100644
> --- a/src/qemu/qemu_migration.c
> +++ b/src/qemu/qemu_migration.c
> @@ -1265,122 +1265,37 @@ cleanup:
...
> +struct _qemuMigrationSpec {
> + enum qemuMigrationDestinationType destType;
> + union {
> + struct {
> + const char *name;
> + int port;
> + } host;
> +
> + struct {
> + const char *file;
> + int sock;
> + } unics; /* this sucks but "unix" is a macro defined to 1 */
stylistic: I would go for unx, unics is so reminiscent of Multics <sigh/>
or unix_socket, that one should be clean.
OK, I kind of like this link to Multics :-) but I agree that unix_socket is
cleaner (though unix_socket.sock is not so nice as unix.sock would have been)
and I also removed the comment.
...
> +qemuMigrationRun(struct qemud_driver *driver,
> + virDomainObjPtr vm,
> + const char *cookiein,
> + int cookieinlen,
> + char **cookieout,
> + int *cookieoutlen,
> + unsigned int flags,
> + unsigned long resource,
> + qemuMigrationSpecPtr spec)
> {
> - qemuDomainObjPrivatePtr priv = vm->privateData;
> - int client_sock = -1;
> - int qemu_sock = -1;
> - struct sockaddr_un sa_qemu, sa_client;
> - socklen_t addrlen;
> - int status;
> - unsigned long long transferred, remaining, total;
> - char *unixfile = NULL;
> - unsigned int background_flags = QEMU_MONITOR_MIGRATE_BACKGROUND;
> int ret = -1;
> + unsigned int migrate_flags = QEMU_MONITOR_MIGRATE_BACKGROUND;
> + qemuDomainObjPrivatePtr priv = vm->privateData;
> qemuMigrationCookiePtr mig = NULL;
> qemuMigrationIOThreadPtr iothread = NULL;
> - VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
> - "cookieout=%p, cookieoutlen=%p, flags=%lx, resource=%lu",
> - driver, vm, st, NULLSTR(cookiein), cookieinlen,
> - cookieout, cookieoutlen, flags, resource);
I would still keep a VIR_DEBUG() even if there is one on the callers,
because that code is new, not that simple, and I would go for increased
tracability/verbosity in that case
OK, I added this additional VIR_DEBUG to qemuMigrationRun too. Note that the
existing do{Native,Tunnel}Migrate didn't lose their VIR_DEBUG calls.
Jirka