[libvirt] [PATCH] xen: Also add sub-type for driver=tap2 in xen-xm

tap2 only handles 'aio', but not 'raw', which must be explicitly given: | $ virsh domxml-to-native yyy.xml > yyy.xm | $ xm new yyy.xm | Error: tap:/srv/xen/xxx.img not a valid disk type | $ sed -i -e 's/tap2:/&aio:/' yyy.xm | $ xm new yyy.xm Fix reading and writing "xen-xm" format for "tap2" by handling it the same as "tap". --- src/xenconfig/xen_xm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xenconfig/xen_xm.c b/src/xenconfig/xen_xm.c index e09d97e..6556886 100644 --- a/src/xenconfig/xen_xm.c +++ b/src/xenconfig/xen_xm.c @@ -196,7 +196,8 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def) } /* And the sub-type for tap:XXX: type */ - if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap")) { + if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap") || + STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap2")) { char *driverType; if (!(tmp = strchr(src, ':'))) @@ -298,7 +299,7 @@ xenFormatXMDisk(virConfValuePtr list, else type = virStorageFileFormatTypeToString(format); virBufferAsprintf(&buf, "%s:", driver); - if (STREQ(driver, "tap")) + if (STREQ(driver, "tap") || STREQ(driver, "tap2")) virBufferAsprintf(&buf, "%s:", type); } else { switch (virDomainDiskGetType(disk)) { -- 2.1.4

On 03/30/2016 03:42 AM, Philipp Hahn wrote:
tap2 only handles 'aio', but not 'raw', which must be explicitly given:
| $ virsh domxml-to-native yyy.xml > yyy.xm | $ xm new yyy.xm | Error: tap:/srv/xen/xxx.img not a valid disk type | $ sed -i -e 's/tap2:/&aio:/' yyy.xm | $ xm new yyy.xm
Fix reading and writing "xen-xm" format for "tap2" by handling it the same as "tap". --- src/xenconfig/xen_xm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-)
This seems fine, but could you also include an xmconfigtest for tap2? Regards, Jim
diff --git a/src/xenconfig/xen_xm.c b/src/xenconfig/xen_xm.c index e09d97e..6556886 100644 --- a/src/xenconfig/xen_xm.c +++ b/src/xenconfig/xen_xm.c @@ -196,7 +196,8 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def) }
/* And the sub-type for tap:XXX: type */ - if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap")) { + if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap") || + STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap2")) { char *driverType;
if (!(tmp = strchr(src, ':'))) @@ -298,7 +299,7 @@ xenFormatXMDisk(virConfValuePtr list, else type = virStorageFileFormatTypeToString(format); virBufferAsprintf(&buf, "%s:", driver); - if (STREQ(driver, "tap")) + if (STREQ(driver, "tap") || STREQ(driver, "tap2")) virBufferAsprintf(&buf, "%s:", type); } else { switch (virDomainDiskGetType(disk)) {

Hi, here is v2 which adds the requested unit test and fixes some file permission for Xen configuration test files. Philipp Hahn (3): xen: Also add sub-type for driver=tap2 in xen-xm xen: test for driver=tap2 sub-type in xen-xm test: Remove executable permission from Xen xm files src/xenconfig/xen_xm.c | 5 ++-- tests/xlconfigdata/test-fullvirt-multiusb.cfg | 0 tests/xmconfigdata/test-disk-drv-blktap-raw.cfg | 12 ++++++++ tests/xmconfigdata/test-disk-drv-blktap-raw.xml | 33 ++++++++++++++++++++++ tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg | 12 ++++++++ tests/xmconfigdata/test-disk-drv-blktap2-raw.xml | 33 ++++++++++++++++++++++ tests/xmconfigdata/test-fullvirt-localtime.cfg | 0 tests/xmconfigdata/test-fullvirt-new-cdrom.cfg | 0 tests/xmconfigdata/test-fullvirt-nohap.cfg | 0 tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-file.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-null.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-pipe.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-pty.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-stdio.cfg | 0 .../test-fullvirt-serial-tcp-telnet.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-tcp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-udp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-unix.cfg | 0 tests/xmconfigdata/test-fullvirt-usbmouse.cfg | 0 tests/xmconfigdata/test-fullvirt-usbtablet.cfg | 0 tests/xmconfigdata/test-fullvirt-utc.cfg | 0 tests/xmconfigdata/test-paravirt-net-e1000.cfg | 0 tests/xmconfigdata/test-paravirt-new-pvfb.cfg | 0 tests/xmconfigtest.c | 3 ++ 25 files changed, 96 insertions(+), 2 deletions(-) mode change 100755 => 100644 tests/xlconfigdata/test-fullvirt-multiusb.cfg create mode 100644 tests/xmconfigdata/test-disk-drv-blktap-raw.cfg create mode 100644 tests/xmconfigdata/test-disk-drv-blktap-raw.xml create mode 100644 tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg create mode 100644 tests/xmconfigdata/test-disk-drv-blktap2-raw.xml mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-localtime.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-new-cdrom.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-nohap.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-file.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-null.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-pipe.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-pty.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-stdio.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-tcp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-udp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-unix.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-usbmouse.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-usbtablet.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-utc.cfg mode change 100755 => 100644 tests/xmconfigdata/test-paravirt-net-e1000.cfg mode change 100755 => 100644 tests/xmconfigdata/test-paravirt-new-pvfb.cfg -- 2.1.4

tap2 only handles 'aio', but not 'raw', which must be explicitly given: | $ virsh domxml-to-native yyy.xml > yyy.xm | $ xm new yyy.xm | Error: tap:/srv/xen/xxx.img not a valid disk type | $ sed -i -e 's/tap2:/&aio:/' yyy.xm | $ xm new yyy.xm Fix reading and writing "xen-xm" format for "tap2" by handling it the same as "tap". --- src/xenconfig/xen_xm.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/xenconfig/xen_xm.c b/src/xenconfig/xen_xm.c index 34d57de..1018e9b 100644 --- a/src/xenconfig/xen_xm.c +++ b/src/xenconfig/xen_xm.c @@ -196,7 +196,8 @@ xenParseXMDisk(virConfPtr conf, virDomainDefPtr def) } /* And the sub-type for tap:XXX: type */ - if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap")) { + if (STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap") || + STREQ_NULLABLE(virDomainDiskGetDriver(disk), "tap2")) { char *driverType; if (!(tmp = strchr(src, ':'))) @@ -298,7 +299,7 @@ xenFormatXMDisk(virConfValuePtr list, else type = virStorageFileFormatTypeToString(format); virBufferAsprintf(&buf, "%s:", driver); - if (STREQ(driver, "tap")) + if (STREQ(driver, "tap") || STREQ(driver, "tap2")) virBufferAsprintf(&buf, "%s:", type); } else { switch (virDomainDiskGetType(disk)) { -- 2.1.4

tap2 only handles 'aio', but not 'raw', which must be explicitly given: XML:raw needs to be translated to XM:aio for 'tap' and 'tap2' Xen drivers. --- tests/xmconfigdata/test-disk-drv-blktap-raw.cfg | 12 +++++++++ tests/xmconfigdata/test-disk-drv-blktap-raw.xml | 33 ++++++++++++++++++++++++ tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg | 12 +++++++++ tests/xmconfigdata/test-disk-drv-blktap2-raw.xml | 33 ++++++++++++++++++++++++ tests/xmconfigtest.c | 3 +++ 5 files changed, 93 insertions(+) create mode 100644 tests/xmconfigdata/test-disk-drv-blktap-raw.cfg create mode 100644 tests/xmconfigdata/test-disk-drv-blktap-raw.xml create mode 100644 tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg create mode 100644 tests/xmconfigdata/test-disk-drv-blktap2-raw.xml diff --git a/tests/xmconfigdata/test-disk-drv-blktap-raw.cfg b/tests/xmconfigdata/test-disk-drv-blktap-raw.cfg new file mode 100644 index 0000000..aa38bc1 --- /dev/null +++ b/tests/xmconfigdata/test-disk-drv-blktap-raw.cfg @@ -0,0 +1,12 @@ +name = "XenGuest1" +uuid = "c7a5fdb0-cdaf-9455-926a-d65c16db1809" +maxmem = 579 +memory = 394 +vcpus = 2 +localtime = 0 +on_poweroff = "destroy" +on_reboot = "restart" +on_crash = "restart" +vif = [ "mac=00:16:3e:66:94:9c,bridge=br0,script=vif-bridge" ] +bootloader = "/usr/bin/pygrub" +disk = [ "tap:aio:/root/some.img,xvda,w" ] diff --git a/tests/xmconfigdata/test-disk-drv-blktap-raw.xml b/tests/xmconfigdata/test-disk-drv-blktap-raw.xml new file mode 100644 index 0000000..cf859ba --- /dev/null +++ b/tests/xmconfigdata/test-disk-drv-blktap-raw.xml @@ -0,0 +1,33 @@ +<domain type='xen'> + <name>XenGuest1</name> + <uuid>c7a5fdb0-cdaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>592896</memory> + <currentMemory unit='KiB'>403456</currentMemory> + <vcpu placement='static'>2</vcpu> + <bootloader>/usr/bin/pygrub</bootloader> + <os> + <type arch='i686' machine='xenpv'>linux</type> + </os> + <clock offset='utc' adjustment='reset'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <disk type='file' device='disk'> + <driver name='tap' type='raw'/> + <source file='/root/some.img'/> + <target dev='xvda' bus='xen'/> + </disk> + <interface type='bridge'> + <mac address='00:16:3e:66:94:9c'/> + <source bridge='br0'/> + <script path='vif-bridge'/> + </interface> + <console type='pty'> + <target type='xen' port='0'/> + </console> + <input type='mouse' bus='xen'/> + <input type='keyboard' bus='xen'/> + <memballoon model='xen'/> + </devices> +</domain> diff --git a/tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg b/tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg new file mode 100644 index 0000000..c74e543 --- /dev/null +++ b/tests/xmconfigdata/test-disk-drv-blktap2-raw.cfg @@ -0,0 +1,12 @@ +name = "XenGuest1" +uuid = "c7a5fdb0-cdaf-9455-926a-d65c16db1809" +maxmem = 579 +memory = 394 +vcpus = 2 +localtime = 0 +on_poweroff = "destroy" +on_reboot = "restart" +on_crash = "restart" +vif = [ "mac=00:16:3e:66:94:9c,bridge=br0,script=vif-bridge" ] +bootloader = "/usr/bin/pygrub" +disk = [ "tap2:aio:/root/some.img,xvda,w" ] diff --git a/tests/xmconfigdata/test-disk-drv-blktap2-raw.xml b/tests/xmconfigdata/test-disk-drv-blktap2-raw.xml new file mode 100644 index 0000000..af2519a --- /dev/null +++ b/tests/xmconfigdata/test-disk-drv-blktap2-raw.xml @@ -0,0 +1,33 @@ +<domain type='xen'> + <name>XenGuest1</name> + <uuid>c7a5fdb0-cdaf-9455-926a-d65c16db1809</uuid> + <memory unit='KiB'>592896</memory> + <currentMemory unit='KiB'>403456</currentMemory> + <vcpu placement='static'>2</vcpu> + <bootloader>/usr/bin/pygrub</bootloader> + <os> + <type arch='i686' machine='xenpv'>linux</type> + </os> + <clock offset='utc' adjustment='reset'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>restart</on_crash> + <devices> + <disk type='file' device='disk'> + <driver name='tap2' type='raw'/> + <source file='/root/some.img'/> + <target dev='xvda' bus='xen'/> + </disk> + <interface type='bridge'> + <mac address='00:16:3e:66:94:9c'/> + <source bridge='br0'/> + <script path='vif-bridge'/> + </interface> + <console type='pty'> + <target type='xen' port='0'/> + </console> + <input type='mouse' bus='xen'/> + <input type='keyboard' bus='xen'/> + <memballoon model='xen'/> + </devices> +</domain> diff --git a/tests/xmconfigtest.c b/tests/xmconfigtest.c index 9b21a13..8964a2a 100644 --- a/tests/xmconfigtest.c +++ b/tests/xmconfigtest.c @@ -249,6 +249,9 @@ mymain(void) DO_TEST("no-source-cdrom"); DO_TEST("pci-devs"); + DO_TEST("disk-drv-blktap-raw"); + DO_TEST("disk-drv-blktap2-raw"); + virObjectUnref(caps); virObjectUnref(xmlopt); -- 2.1.4

The configuration files are not directly executable as they don't have as hash-bang line. --- tests/xlconfigdata/test-fullvirt-multiusb.cfg | 0 tests/xmconfigdata/test-fullvirt-localtime.cfg | 0 tests/xmconfigdata/test-fullvirt-new-cdrom.cfg | 0 tests/xmconfigdata/test-fullvirt-nohap.cfg | 0 tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-file.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-null.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-pipe.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-pty.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-stdio.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-tcp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-udp.cfg | 0 tests/xmconfigdata/test-fullvirt-serial-unix.cfg | 0 tests/xmconfigdata/test-fullvirt-usbmouse.cfg | 0 tests/xmconfigdata/test-fullvirt-usbtablet.cfg | 0 tests/xmconfigdata/test-fullvirt-utc.cfg | 0 tests/xmconfigdata/test-paravirt-net-e1000.cfg | 0 tests/xmconfigdata/test-paravirt-new-pvfb.cfg | 0 19 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 tests/xlconfigdata/test-fullvirt-multiusb.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-localtime.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-new-cdrom.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-nohap.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-file.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-null.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-pipe.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-pty.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-stdio.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-tcp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-udp.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-serial-unix.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-usbmouse.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-usbtablet.cfg mode change 100755 => 100644 tests/xmconfigdata/test-fullvirt-utc.cfg mode change 100755 => 100644 tests/xmconfigdata/test-paravirt-net-e1000.cfg mode change 100755 => 100644 tests/xmconfigdata/test-paravirt-new-pvfb.cfg diff --git a/tests/xlconfigdata/test-fullvirt-multiusb.cfg b/tests/xlconfigdata/test-fullvirt-multiusb.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-localtime.cfg b/tests/xmconfigdata/test-fullvirt-localtime.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-new-cdrom.cfg b/tests/xmconfigdata/test-fullvirt-new-cdrom.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-nohap.cfg b/tests/xmconfigdata/test-fullvirt-nohap.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg b/tests/xmconfigdata/test-fullvirt-parallel-tcp.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-file.cfg b/tests/xmconfigdata/test-fullvirt-serial-file.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-null.cfg b/tests/xmconfigdata/test-fullvirt-serial-null.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-pipe.cfg b/tests/xmconfigdata/test-fullvirt-serial-pipe.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-pty.cfg b/tests/xmconfigdata/test-fullvirt-serial-pty.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-stdio.cfg b/tests/xmconfigdata/test-fullvirt-serial-stdio.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.cfg b/tests/xmconfigdata/test-fullvirt-serial-tcp-telnet.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-tcp.cfg b/tests/xmconfigdata/test-fullvirt-serial-tcp.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-udp.cfg b/tests/xmconfigdata/test-fullvirt-serial-udp.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-serial-unix.cfg b/tests/xmconfigdata/test-fullvirt-serial-unix.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-usbmouse.cfg b/tests/xmconfigdata/test-fullvirt-usbmouse.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-usbtablet.cfg b/tests/xmconfigdata/test-fullvirt-usbtablet.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-fullvirt-utc.cfg b/tests/xmconfigdata/test-fullvirt-utc.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-paravirt-net-e1000.cfg b/tests/xmconfigdata/test-paravirt-net-e1000.cfg old mode 100755 new mode 100644 diff --git a/tests/xmconfigdata/test-paravirt-new-pvfb.cfg b/tests/xmconfigdata/test-paravirt-new-pvfb.cfg old mode 100755 new mode 100644 -- 2.1.4

Philipp Hahn wrote:
Hi,
Sorry for the delay. I was waiting for 1.3.5 to release and the freeze to lift.
here is v2 which adds the requested unit test and fixes some file permission for Xen configuration test files.
Philipp Hahn (3): xen: Also add sub-type for driver=tap2 in xen-xm xen: test for driver=tap2 sub-type in xen-xm test: Remove executable permission from Xen xm files
Thanks for adding the tests, and fixing permissions on existing xmconfig tests. ACK. I've pushed the patches now. Regards, Jim
participants (2)
-
Jim Fehlig
-
Philipp Hahn