[libvirt] [PATCH 0/1] enospace disk error policy

Dan Kenigsberg requested that we add an option to explicitly request enospace as the disk error policy. David Allan (1): Add enospace option to qemu disk error policy docs/schemas/domain.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_conf.c | 2 + tests/qemuargv2xmltest.c | 3 ++ ...uxml2argv-disk-drive-error-policy-enospace.args | 1 + ...muxml2argv-disk-drive-error-policy-enospace.xml | 32 ++++++++++++++++++++ 7 files changed, 42 insertions(+), 1 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml

* Dan Kenigsberg requested explicit support for the qemu default disk error policy which is enospace --- docs/schemas/domain.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_conf.c | 2 + tests/qemuargv2xmltest.c | 3 ++ ...uxml2argv-disk-drive-error-policy-enospace.args | 1 + ...muxml2argv-disk-drive-error-policy-enospace.xml | 32 ++++++++++++++++++++ 7 files changed, 42 insertions(+), 1 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng index 58c9fcb..56b6705 100644 --- a/docs/schemas/domain.rng +++ b/docs/schemas/domain.rng @@ -629,6 +629,7 @@ <choice> <value>stop</value> <value>ignore</value> + <value>enospace</value> </choice> </attribute> </define> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3cd43eb..2de838b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -129,7 +129,8 @@ VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST, VIR_ENUM_IMPL(virDomainDiskErrorPolicy, VIR_DOMAIN_DISK_ERROR_POLICY_LAST, "default", "stop", - "ignore") + "ignore", + "enospace") VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST, "ide", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5c64a47..82f2d15 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -156,6 +156,7 @@ enum virDomainDiskErrorPolicy { VIR_DOMAIN_DISK_ERROR_POLICY_DEFAULT, VIR_DOMAIN_DISK_ERROR_POLICY_STOP, VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE, + VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE, VIR_DOMAIN_DISK_ERROR_POLICY_LAST }; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index df57d88..48252a5 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -4938,6 +4938,8 @@ qemuParseCommandLineDisk(const char *val, def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_STOP; else if (STREQ(values[i], "ignore")) def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE; + else if (STREQ(values[i], "enospace")) + def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE; } else if (STREQ(keywords[i], "index")) { if (virStrToLong_i(values[i], NULL, 10, &idx) < 0) { virDomainDiskDefFree(def); diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index b330238..bd81018 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -165,6 +165,9 @@ mymain(int argc, char **argv) DO_TEST("disk-drive-error-policy-stop", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_MONITOR_JSON | QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-error-policy-enospace", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_MONITOR_JSON | + QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_DRIVE_CACHE_V2); DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE | diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args new file mode 100644 index 0000000..c208821 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args @@ -0,0 +1 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,bus=0,unit=0,format=qcow2,cache=off,werror=enospace,rerror=enospace -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,bus=1,unit=0,format=raw -net none -serial none -parallel none -usb diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml new file mode 100644 index 0000000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219200</memory> + <currentMemory>219200</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' unit='0'/> + </disk> + <disk type='block' device='cdrom'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdc' bus='ide'/> + <readonly/> + <address type='drive' controller='0' bus='1' unit='0'/> + </disk> + <controller type='ide' index='0'/> + </devices> +</domain> -- 1.7.0.1

On Thu, Apr 08, 2010 at 04:11:33PM -0400, David Allan wrote:
* Dan Kenigsberg requested explicit support for the qemu default disk error policy which is enospace --- docs/schemas/domain.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_conf.c | 2 + tests/qemuargv2xmltest.c | 3 ++ ...uxml2argv-disk-drive-error-policy-enospace.args | 1 + ...muxml2argv-disk-drive-error-policy-enospace.xml | 32 ++++++++++++++++++++ 7 files changed, 42 insertions(+), 1 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng index 58c9fcb..56b6705 100644 --- a/docs/schemas/domain.rng +++ b/docs/schemas/domain.rng @@ -629,6 +629,7 @@ <choice> <value>stop</value> <value>ignore</value> + <value>enospace</value> </choice> </attribute> </define> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3cd43eb..2de838b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -129,7 +129,8 @@ VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST, VIR_ENUM_IMPL(virDomainDiskErrorPolicy, VIR_DOMAIN_DISK_ERROR_POLICY_LAST, "default", "stop", - "ignore") + "ignore", + "enospace")
VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST, "ide", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5c64a47..82f2d15 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -156,6 +156,7 @@ enum virDomainDiskErrorPolicy { VIR_DOMAIN_DISK_ERROR_POLICY_DEFAULT, VIR_DOMAIN_DISK_ERROR_POLICY_STOP, VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE, + VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE,
VIR_DOMAIN_DISK_ERROR_POLICY_LAST }; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index df57d88..48252a5 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -4938,6 +4938,8 @@ qemuParseCommandLineDisk(const char *val, def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_STOP; else if (STREQ(values[i], "ignore")) def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE; + else if (STREQ(values[i], "enospace")) + def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE; } else if (STREQ(keywords[i], "index")) { if (virStrToLong_i(values[i], NULL, 10, &idx) < 0) { virDomainDiskDefFree(def); diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index b330238..bd81018 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -165,6 +165,9 @@ mymain(int argc, char **argv) DO_TEST("disk-drive-error-policy-stop", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_MONITOR_JSON | QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-error-policy-enospace", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_MONITOR_JSON | + QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_DRIVE_CACHE_V2); DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE | diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args new file mode 100644 index 0000000..c208821 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args @@ -0,0 +1 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,bus=0,unit=0,format=qcow2,cache=off,werror=enospace,rerror=enospace -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,bus=1,unit=0,format=raw -net none -serial none -parallel none -usb diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml new file mode 100644 index 0000000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219200</memory> + <currentMemory>219200</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' unit='0'/> + </disk> + <disk type='block' device='cdrom'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdc' bus='ide'/> + <readonly/> + <address type='drive' controller='0' bus='1' unit='0'/> + </disk> + <controller type='ide' index='0'/> + </devices> +</domain>
Apart from being really late, that looks fine, with the exception that I don't see where the actual qemu command line is being modified I would have expected some conversion from def->error_policy new value in qemu_driver.c ? Actually checked it's automatically converted in qemuBuildDriveStr by virDomainDiskErrorPolicyTypeToString, so looks fine to me ACK Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@veillard.com | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/

On Thu, Apr 08, 2010 at 10:33:53PM +0200, Daniel Veillard wrote:
On Thu, Apr 08, 2010 at 04:11:33PM -0400, David Allan wrote:
* Dan Kenigsberg requested explicit support for the qemu default disk error policy which is enospace --- docs/schemas/domain.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_conf.c | 2 + tests/qemuargv2xmltest.c | 3 ++ ...uxml2argv-disk-drive-error-policy-enospace.args | 1 + ...muxml2argv-disk-drive-error-policy-enospace.xml | 32 ++++++++++++++++++++ 7 files changed, 42 insertions(+), 1 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng index 58c9fcb..56b6705 100644 --- a/docs/schemas/domain.rng +++ b/docs/schemas/domain.rng @@ -629,6 +629,7 @@ <choice> <value>stop</value> <value>ignore</value> + <value>enospace</value> </choice> </attribute> </define> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3cd43eb..2de838b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -129,7 +129,8 @@ VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST, VIR_ENUM_IMPL(virDomainDiskErrorPolicy, VIR_DOMAIN_DISK_ERROR_POLICY_LAST, "default", "stop", - "ignore") + "ignore", + "enospace")
Apart from being really late, that looks fine, with the exception that I don't see where the actual qemu command line is being modified I would have expected some conversion from def->error_policy new value in qemu_driver.c ?
The actual command line value is generated based on the ENUM declaration, so just adding to the VIR_ENUM_IMPL is sufficient to make it work here REgards, Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|

On Thu, Apr 08, 2010 at 10:33:53PM +0200, Daniel Veillard wrote:
On Thu, Apr 08, 2010 at 04:11:33PM -0400, David Allan wrote:
* Dan Kenigsberg requested explicit support for the qemu default disk error policy which is enospace --- docs/schemas/domain.rng | 1 + src/conf/domain_conf.c | 3 +- src/conf/domain_conf.h | 1 + src/qemu/qemu_conf.c | 2 + tests/qemuargv2xmltest.c | 3 ++ ...uxml2argv-disk-drive-error-policy-enospace.args | 1 + ...muxml2argv-disk-drive-error-policy-enospace.xml | 32 ++++++++++++++++++++ 7 files changed, 42 insertions(+), 1 deletions(-) create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml
diff --git a/docs/schemas/domain.rng b/docs/schemas/domain.rng index 58c9fcb..56b6705 100644 --- a/docs/schemas/domain.rng +++ b/docs/schemas/domain.rng @@ -629,6 +629,7 @@ <choice> <value>stop</value> <value>ignore</value> + <value>enospace</value> </choice> </attribute> </define> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 3cd43eb..2de838b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -129,7 +129,8 @@ VIR_ENUM_IMPL(virDomainDiskCache, VIR_DOMAIN_DISK_CACHE_LAST, VIR_ENUM_IMPL(virDomainDiskErrorPolicy, VIR_DOMAIN_DISK_ERROR_POLICY_LAST, "default", "stop", - "ignore") + "ignore", + "enospace")
VIR_ENUM_IMPL(virDomainController, VIR_DOMAIN_CONTROLLER_TYPE_LAST, "ide", diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 5c64a47..82f2d15 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -156,6 +156,7 @@ enum virDomainDiskErrorPolicy { VIR_DOMAIN_DISK_ERROR_POLICY_DEFAULT, VIR_DOMAIN_DISK_ERROR_POLICY_STOP, VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE, + VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE,
VIR_DOMAIN_DISK_ERROR_POLICY_LAST }; diff --git a/src/qemu/qemu_conf.c b/src/qemu/qemu_conf.c index df57d88..48252a5 100644 --- a/src/qemu/qemu_conf.c +++ b/src/qemu/qemu_conf.c @@ -4938,6 +4938,8 @@ qemuParseCommandLineDisk(const char *val, def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_STOP; else if (STREQ(values[i], "ignore")) def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_IGNORE; + else if (STREQ(values[i], "enospace")) + def->error_policy = VIR_DOMAIN_DISK_ERROR_POLICY_ENOSPACE; } else if (STREQ(keywords[i], "index")) { if (virStrToLong_i(values[i], NULL, 10, &idx) < 0) { virDomainDiskDefFree(def); diff --git a/tests/qemuargv2xmltest.c b/tests/qemuargv2xmltest.c index b330238..bd81018 100644 --- a/tests/qemuargv2xmltest.c +++ b/tests/qemuargv2xmltest.c @@ -165,6 +165,9 @@ mymain(int argc, char **argv) DO_TEST("disk-drive-error-policy-stop", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_MONITOR_JSON | QEMUD_CMD_FLAG_DRIVE_FORMAT); + DO_TEST("disk-drive-error-policy-enospace", QEMUD_CMD_FLAG_DRIVE | + QEMUD_CMD_FLAG_MONITOR_JSON | + QEMUD_CMD_FLAG_DRIVE_FORMAT); DO_TEST("disk-drive-cache-v2-wt", QEMUD_CMD_FLAG_DRIVE | QEMUD_CMD_FLAG_DRIVE_CACHE_V2); DO_TEST("disk-drive-cache-v2-wb", QEMUD_CMD_FLAG_DRIVE | diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args new file mode 100644 index 0000000..c208821 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.args @@ -0,0 +1 @@ +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot c -drive file=/dev/HostVG/QEMUGuest1,if=ide,bus=0,unit=0,format=qcow2,cache=off,werror=enospace,rerror=enospace -drive file=/dev/HostVG/QEMUGuest2,if=ide,media=cdrom,bus=1,unit=0,format=raw -net none -serial none -parallel none -usb diff --git a/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml new file mode 100644 index 0000000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +<domain type='qemu'> + <name>QEMUGuest1</name> + <uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid> + <memory>219200</memory> + <currentMemory>219200</currentMemory> + <vcpu>1</vcpu> + <os> + <type arch='i686' machine='pc'>hvm</type> + <boot dev='hd'/> + </os> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu</emulator> + <disk type='block' device='disk'> + <driver name='qemu' type='qcow2' cache='none' error_policy='enospace'/> + <source dev='/dev/HostVG/QEMUGuest1'/> + <target dev='hda' bus='ide'/> + <address type='drive' controller='0' bus='0' unit='0'/> + </disk> + <disk type='block' device='cdrom'> + <driver name='qemu' type='raw'/> + <source dev='/dev/HostVG/QEMUGuest2'/> + <target dev='hdc' bus='ide'/> + <readonly/> + <address type='drive' controller='0' bus='1' unit='0'/> + </disk> + <controller type='ide' index='0'/> + </devices> +</domain>
Apart from being really late, that looks fine, with the exception that I don't see where the actual qemu command line is being modified I would have expected some conversion from def->error_policy new value in qemu_driver.c ? Actually checked it's automatically converted in qemuBuildDriveStr by virDomainDiskErrorPolicyTypeToString, so looks fine to me
ACK
Thanks Daniel. I pushed this patch at the end of last week following your ack. My outgoing mail got snarled for a bit, and the message saying so bounced. Dave

On Thu, Apr 08, 2010 at 04:11:32PM -0400, David Allan wrote:
Dan Kenigsberg requested that we add an option to explicitly request enospace as the disk error policy.
Well, to be more exact, I asked if leaving it out was intentional ;-) (But I do think that alowing explicity here is a good idea, thanks) I do have one issue with error_policy: for qemu-0.12 (with -drive and id=) libvirt creates a command line such as qemu-kvm -drive file=/tmp/1.qcow2,format=qcow2,if=none,werror=stop,id=drive-ide0-0-0 Which qemu does not like ("werror is no supported by this format"). This error goes away if the "if=none" clause is dropped. I'm not sure if it is not a qemu bug, though.

On Fri, Apr 09, 2010 at 11:44:30AM +0300, Dan Kenigsberg wrote:
On Thu, Apr 08, 2010 at 04:11:32PM -0400, David Allan wrote:
Dan Kenigsberg requested that we add an option to explicitly request enospace as the disk error policy.
Well, to be more exact, I asked if leaving it out was intentional ;-) (But I do think that alowing explicity here is a good idea, thanks)
I do have one issue with error_policy: for qemu-0.12 (with -drive and id=) libvirt creates a command line such as
qemu-kvm -drive file=/tmp/1.qcow2,format=qcow2,if=none,werror=stop,id=drive-ide0-0-0
Which qemu does not like ("werror is no supported by this format"). This error goes away if the "if=none" clause is dropped. I'm not sure if it is not a qemu bug, though.
Yeah its a QEMU bug - there's a BZ open about this. Basically they have a bogus checking on IF_NONE that doesn't take account of the new style options using -device Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
participants (5)
-
Dan Kenigsberg
-
Daniel P. Berrange
-
Daniel Veillard
-
Dave Allan
-
David Allan