From c7a3729f459a845f4e7b30c09ea378c54ee49c32 Mon Sep 17 00:00:00 2001 From: "Richard W.M. Jones" Date: Thu, 2 Jul 2009 17:38:55 +0100 Subject: [PATCH 1/1] Add ./configure --with-drive-if=(ide|scsi|virtio) With this flag the packager can decide to default to a particular qemu drive model. The current default is 'ide', however note that we intend to change this in future to 'virtio' once some upstream regressions are fixed. Packagers can force a particular drive model if they wish. --- configure.ac | 12 ++++++++++++ src/generator.ml | 4 ++-- src/guestfs.c | 4 ++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 03f9388..ae0d81e 100644 --- a/configure.ac +++ b/configure.ac @@ -102,6 +102,18 @@ the --with-qemu option. AC_MSG_RESULT([yes]) fi +dnl Set drive interface used by the guestfs_add_drive{,_ro} calls +dnl ('-drive ...,if=...' option to qemu). +dnl +dnl NB. We will change the default in future to virtio, but at the +dnl moment this causes a performance problem, RHBZ#509383. +AC_ARG_WITH([drive-if], + [AS_HELP_STRING([--with-drive-if], + [set default driver (ide|scsi|virtio) @<:@default=ide@:>@])], + [], + [with_drive_if=ide]) +AC_DEFINE_UNQUOTED([DRIVE_IF],["$with_drive_if"],[Default drive interface.]) + dnl Check for febootstrap etc. AC_CHECK_PROG([FEBOOTSTRAP], [febootstrap],[febootstrap],[no]) diff --git a/src/generator.ml b/src/generator.ml index f41413e..239f021 100755 --- a/src/generator.ml +++ b/src/generator.ml @@ -378,7 +378,7 @@ just want to read the image or write access if you want to modify the image). This is equivalent to the qemu parameter -C<-drive file=filename,cache=off,if=virtio>. +C<-drive file=filename,cache=off,if=...>. Note that this call checks for the existence of C. This stops you from specifying other types of drive which are supported @@ -412,7 +412,7 @@ handle is closed. We don't currently have any method to enable changes to be committed, although qemu can support this. This is equivalent to the qemu parameter -C<-drive file=filename,snapshot=on,if=virtio>. +C<-drive file=filename,snapshot=on,if=...>. Note that this call checks for the existence of C. This stops you from specifying other types of drive which are supported diff --git a/src/guestfs.c b/src/guestfs.c index 9cdb2dd..c3bce0b 100644 --- a/src/guestfs.c +++ b/src/guestfs.c @@ -708,7 +708,7 @@ guestfs_add_drive (guestfs_h *g, const char *filename) } /* cache=off improves reliability in the event of a host crash. */ - snprintf (buf, len, "file=%s,cache=off,if=virtio", filename); + snprintf (buf, len, "file=%s,cache=off,if=%s", filename, DRIVE_IF); return guestfs_config (g, "-drive", buf); } @@ -729,7 +729,7 @@ guestfs_add_drive_ro (guestfs_h *g, const char *filename) return -1; } - snprintf (buf, len, "file=%s,snapshot=on,if=virtio", filename); + snprintf (buf, len, "file=%s,snapshot=on,if=%s", filename, DRIVE_IF); return guestfs_config (g, "-drive", buf); } -- 1.8.3.1