From 659bd66529fd5712bc0608561d62ffdd60c68484 Mon Sep 17 00:00:00 2001 From: Cole Robinson Date: Tue, 16 Jun 2009 15:17:10 +0000 Subject: [PATCH] Check that '-drive format=' is supported before adding to qemu cmdline. Qemu < 0.10.0 did not support it, and virt-* tools now try to add this by default, so it's extra important we ensure the option exists. --- ChangeLog | 5 +++++ src/qemu_conf.c | 5 ++++- src/qemu_conf.h | 1 + tests/qemuhelptest.c | 8 ++++---- tests/qemuxml2argvtest.c | 20 ++++++++++++-------- 5 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ChangeLog b/ChangeLog index d16fcdf4f5..c3f8c836df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Jun 16 11:16:17 EDT 2009 Cole Robinson + + * src/qemu_conf.c src/qemu_conf.h tests/qemuhelptest.c + tests/qemuxml2argvtest.c: Check that '-drive format=' is supported + Tue Jun 16 10:04:32 EDT 2009 Cole Robinson * tests/.cvsignore tests/.hgignore tests/.gitignore: diff --git a/src/qemu_conf.c b/src/qemu_conf.c index a669c11c00..0c6221dcbd 100644 --- a/src/qemu_conf.c +++ b/src/qemu_conf.c @@ -435,6 +435,8 @@ static unsigned int qemudComputeCmdFlags(const char *help, flags |= QEMUD_CMD_FLAG_DRIVE; if (strstr(help, "cache=writethrough|writeback|none")) flags |= QEMUD_CMD_FLAG_DRIVE_CACHE_V2; + if (strstr(help, "format=")) + flags |= QEMUD_CMD_FLAG_DRIVE_FORMAT; } if (strstr(help, "boot=on")) flags |= QEMUD_CMD_FLAG_DRIVE_BOOT; @@ -1231,7 +1233,8 @@ int qemudBuildCommandLine(virConnectPtr conn, if (bootable && disk->device == VIR_DOMAIN_DISK_DEVICE_DISK) virBufferAddLit(&opt, ",boot=on"); - if (disk->driverType) + if (disk->driverType && + qemuCmdFlags & QEMUD_CMD_FLAG_DRIVE_FORMAT) virBufferVSprintf(&opt, ",format=%s", disk->driverType); if (disk->cachemode) { diff --git a/src/qemu_conf.h b/src/qemu_conf.h index 280ad25d3e..c0ed46dd97 100644 --- a/src/qemu_conf.h +++ b/src/qemu_conf.h @@ -56,6 +56,7 @@ enum qemud_cmd_flags { QEMUD_CMD_FLAG_MIGRATE_QEMU_EXEC = (1 << 11), /* New migration syntax after merge to QEMU with EXEC transport */ QEMUD_CMD_FLAG_DRIVE_CACHE_V2 = (1 << 12), /* Is the cache= flag wanting new v2 values */ QEMUD_CMD_FLAG_KVM = (1 << 13), /* Whether KVM is compiled in */ + QEMUD_CMD_FLAG_DRIVE_FORMAT = (1 << 14), /* Is -drive format= avail */ }; /* Main driver state */ diff --git a/tests/qemuhelptest.c b/tests/qemuhelptest.c index 836010ff40..bf8a293f0f 100644 --- a/tests/qemuhelptest.c +++ b/tests/qemuhelptest.c @@ -90,10 +90,10 @@ mymain(int argc, char **argv) } while (0) DO_TEST("qemu-0.9.1", 0x002f, 9001, 0, 0); - DO_TEST("kvm-74", 0x233e, 9001, 1, 74); - DO_TEST("qemu-0.10.5", 0x1c6f, 10005, 0, 0); - DO_TEST("qemu-kvm-0.10.5", 0x3d7e, 10005, 1, 0); - DO_TEST("kvm-86", 0x3d7e, 10050, 1, 0); + DO_TEST("kvm-74", 0x633e, 9001, 1, 74); + DO_TEST("qemu-0.10.5", 0x5c6f, 10005, 0, 0); + DO_TEST("qemu-kvm-0.10.5", 0x7d7e, 10005, 1, 0); + DO_TEST("kvm-86", 0x7d7e, 10050, 1, 0); return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE; } diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 5ba6db3e3f..28609ebe27 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -196,17 +196,21 @@ mymain(int argc, char **argv) DO_TEST("disk-drive-boot-cdrom", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_DRIVE_BOOT); DO_TEST("disk-drive-fmt-qcow", QEMUD_CMD_FLAG_DRIVE | - QEMUD_CMD_FLAG_DRIVE_BOOT); - DO_TEST("disk-drive-shared", QEMUD_CMD_FLAG_DRIVE); - DO_TEST("disk-drive-cache-v1-wt", QEMUD_CMD_FLAG_DRIVE); - DO_TEST("disk-drive-cache-v1-wb", QEMUD_CMD_FLAG_DRIVE); - DO_TEST("disk-drive-cache-v1-none", QEMUD_CMD_FLAG_DRIVE); + QEMUD_CMD_FLAG_DRIVE_BOOT | QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-shared", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-cache-v1-wt", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-cache-v1-wb", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-cache-v1-none", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE | - QEMUD_CMD_FLAG_DRIVE_CACHE_V2); + QEMUD_CMD_FLAG_DRIVE_CACHE_V2 | QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE | - QEMUD_CMD_FLAG_DRIVE_CACHE_V2); + QEMUD_CMD_FLAG_DRIVE_CACHE_V2 | QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-none", QEMUD_CMD_FLAG_DRIVE | - QEMUD_CMD_FLAG_DRIVE_CACHE_V2); + QEMUD_CMD_FLAG_DRIVE_CACHE_V2 | QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-usb", 0); DO_TEST("graphics-vnc", 0);