Re: [libvirt] [PATCH 1/1] Add enospace option to qemu disk error policy
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 valuestop/value valueignore/value +valueenospace/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 000..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 000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +domain type='qemu' + nameQEMUGuest1/name + uuidc7a5fdbd-edaf-9455-926a-d65c16db1809/uuid + memory219200/memory + currentMemory219200/currentMemory + vcpu1/vcpu + os +type arch='i686'
Re: [libvirt] [PATCH 1/1] Add enospace option to qemu disk error policy
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 valuestop/value valueignore/value +valueenospace/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 :| -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH 1/1] Add enospace option to qemu disk error policy
* 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 valuestop/value valueignore/value +valueenospace/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 000..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 000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +domain type='qemu' + nameQEMUGuest1/name + uuidc7a5fdbd-edaf-9455-926a-d65c16db1809/uuid + memory219200/memory + currentMemory219200/currentMemory + vcpu1/vcpu + os +type arch='i686' machine='pc'hvm/type +boot dev='hd'/ + /os + clock offset='utc'/ + on_poweroffdestroy/on_poweroff + on_rebootrestart/on_reboot + on_crashdestroy/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'/ +
Re: [libvirt] [PATCH 1/1] Add enospace option to qemu disk error policy
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 valuestop/value valueignore/value +valueenospace/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 000..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 000..8fe64d4 --- /dev/null +++ b/tests/qemuxml2argvdata/qemuxml2argv-disk-drive-error-policy-enospace.xml @@ -0,0 +1,32 @@ +domain type='qemu' + nameQEMUGuest1/name + uuidc7a5fdbd-edaf-9455-926a-d65c16db1809/uuid + memory219200/memory + currentMemory219200/currentMemory + vcpu1/vcpu + os +type arch='i686' machine='pc'hvm/type +boot dev='hd'/ + /os + clock offset='utc'/ + on_poweroffdestroy/on_poweroff + on_rebootrestart/on_reboot + on_crashdestroy/on_crash + devices +