Richard W.M. Jones
2010-Jan-07 12:24 UTC
[Libguestfs] [PATCH] qemu: Upstream regression of -stdio serial option.
I've tested this with both upstream qemu from git, and the old non-broken qemu from Fedora 12. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming blog: http://rwmj.wordpress.com Fedora now supports 80 OCaml packages (the OPEN alternative to F#) http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora -------------- next part -------------->From d3caa3384d2f485679b4732ef2d0f0ffb12d202b Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Thu, 7 Jan 2010 12:21:42 +0000 Subject: [PATCH] qemu: Upstream regression of -stdio serial option. Best explained by the comment in the code: /* Newer versions of qemu (from around 2009/12) changed the * behaviour of monitors so that an implicit '-monitor stdio' is * assumed if we are in -nographic mode and there is no other * -monitor option. Only a single stdio device is allowed, so * this broke the '-serial stdio' option. Therefore if qemu * supports the -monitor option at all, set it to null. Note also * that '-monitor none' doesn't work here either. */ --- src/guestfs.c | 17 ++++++++++++++++- 1 files changed, 16 insertions(+), 1 deletions(-) diff --git a/src/guestfs.c b/src/guestfs.c index 7cc09ce..a6812aa 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -1095,11 +1095,26 @@ guestfs__launch (guestfs_h *g) add_cmdline (g, "-m"); add_cmdline (g, buf); - add_cmdline (g, "-no-reboot"); /* Force exit instead of reboot on panic */ + /* Newer versions of qemu (from around 2009/12) changed the + * behaviour of monitors so that an implicit '-monitor stdio' is + * assumed if we are in -nographic mode and there is no other + * -monitor option. Only a single stdio device is allowed, so + * this broke the '-serial stdio' option. Therefore if qemu + * supports the -monitor option at all, set it to null. Note also + * that '-monitor none' doesn't work here either. + */ + if (qemu_supports (g, "-monitor")) { + add_cmdline (g, "-monitor"); + add_cmdline (g, "null"); + } + add_cmdline (g, "-nographic"); add_cmdline (g, "-serial"); add_cmdline (g, "stdio"); + /* Force exit instead of reboot on panic */ + add_cmdline (g, "-no-reboot"); + /* These options recommended by KVM developers to improve reliability. */ if (qemu_supports (g, "-no-hpet")) add_cmdline (g, "-no-hpet"); -- 1.6.5.2
Richard W.M. Jones
2010-Jan-07 13:37 UTC
[Libguestfs] [PATCH v2] qemu: Upstream regression of -stdio serial option.
This is a better suggestion from Dan Berrange. Also tested against both qemu from Fedora 12 and qemu from git. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming blog: http://rwmj.wordpress.com Fedora now supports 80 OCaml packages (the OPEN alternative to F#) http://cocan.org/getting_started_with_ocaml_on_red_hat_and_fedora -------------- next part -------------->From b4a4db522fed542f48aa60717e65061c5e83c919 Mon Sep 17 00:00:00 2001From: Richard Jones <rjones at redhat.com> Date: Thu, 7 Jan 2010 12:21:42 +0000 Subject: [PATCH] qemu: Upstream regression of -stdio serial option. Best explained by the comment in the code: /* Newer versions of qemu (from around 2009/12) changed the * behaviour of monitors so that an implicit '-monitor stdio' is * assumed if we are in -nographic mode and there is no other * -monitor option. Only a single stdio device is allowed, so * this broke the '-serial stdio' option. There is a new flag * called -nodefaults which gets rid of all this default crud, so * let's use that to avoid this and any future surprises. */ --- src/guestfs.c | 21 +++++++++++++++++---- 1 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/guestfs.c b/src/guestfs.c index 7cc09ce..a3d2762 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -1091,15 +1091,28 @@ guestfs__launch (guestfs_h *g) */ g->cmdline[0] = g->qemu; - snprintf (buf, sizeof buf, "%d", g->memsize); - add_cmdline (g, "-m"); - add_cmdline (g, buf); + /* Newer versions of qemu (from around 2009/12) changed the + * behaviour of monitors so that an implicit '-monitor stdio' is + * assumed if we are in -nographic mode and there is no other + * -monitor option. Only a single stdio device is allowed, so + * this broke the '-serial stdio' option. There is a new flag + * called -nodefaults which gets rid of all this default crud, so + * let's use that to avoid this and any future surprises. + */ + if (qemu_supports (g, "-nodefaults")) + add_cmdline (g, "-nodefaults"); - add_cmdline (g, "-no-reboot"); /* Force exit instead of reboot on panic */ add_cmdline (g, "-nographic"); add_cmdline (g, "-serial"); add_cmdline (g, "stdio"); + snprintf (buf, sizeof buf, "%d", g->memsize); + add_cmdline (g, "-m"); + add_cmdline (g, buf); + + /* Force exit instead of reboot on panic */ + add_cmdline (g, "-no-reboot"); + /* These options recommended by KVM developers to improve reliability. */ if (qemu_supports (g, "-no-hpet")) add_cmdline (g, "-no-hpet"); -- 1.6.5.2