Re: [libvirt] [PATCH 1/1] Add enospace option to qemu disk error policy

2010-04-12 Thread Dave Allan
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

2010-04-09 Thread Daniel P. Berrange
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

2010-04-08 Thread David Allan
* 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

2010-04-08 Thread Daniel Veillard
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
 +