TEST_DISK_TO_JSON("file-backing_basic-unmap-ignore");
TEST_DISK_TO_JSON("file-backing_basic-detect");
+ TEST_DISK_TO_JSON("file-backing_basic-cache-none");
+ TEST_DISK_TO_JSON("file-backing_basic-cache-writethrough");
+ TEST_DISK_TO_JSON("file-backing_basic-cache-writeback");
+ TEST_DISK_TO_JSON("file-backing_basic-cache-directsync");
+ TEST_DISK_TO_JSON("file-backing_basic-cache-unsafe");
+ TEST_DISK_TO_JSON("network-qcow2-backing-chain-cache-unsafe");
+ TEST_DISK_TO_JSON("dir-fat-cache");
+
cleanup:
virHashFree(diskxmljsondata.schema);
qemuTestDriverFree(&driver);
--- /dev/null
+{
+ "node-name": "node-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "vvfat",
+ "dir": "/var/somefiles",
+ "floppy": false,
+ "rw": false,
+ "node-name": "node-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='dir' device='disk'>
+ <driver name='qemu' type='fat' cache='directsync'/>
+ <source dir='/var/somefiles'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-s'/>
+ <nodename type='format' name='node-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <target dev='vda'/>
+ <readonly/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-c-f"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-d-f"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "node-name": "node-d-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='directsync'/>
+ <source file='/var/lib/libvirt/images/a'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-a-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='1'>
+ <format type='qcow2'/>
+ <source file='/var/lib/libvirt/images/b'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='2'>
+ <format type='qcow2'/>
+ <source protocol='gluster' name='images/c'>
+ <host name='test.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-c-s'/>
+ <nodename type='format' name='node-c-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='3'>
+ <format type='raw'/>
+ <source file='/var/lib/libvirt/images/d'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-d-s'/>
+ <nodename type='format' name='node-d-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ </backingStore>
+ </backingStore>
+ <target dev='vda'/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-c-f"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-d-f"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "node-name": "node-d-s",
+ "cache": {
+ "direct": true,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='none'/>
+ <source file='/var/lib/libvirt/images/a'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-a-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='1'>
+ <format type='qcow2'/>
+ <source file='/var/lib/libvirt/images/b'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='2'>
+ <format type='qcow2'/>
+ <source protocol='gluster' name='images/c'>
+ <host name='test.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-c-s'/>
+ <nodename type='format' name='node-c-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='3'>
+ <format type='raw'/>
+ <source file='/var/lib/libvirt/images/d'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-d-s'/>
+ <nodename type='format' name='node-d-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ </backingStore>
+ </backingStore>
+ <target dev='vda'/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-c-f"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-d-f"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "node-name": "node-d-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='unsafe'/>
+ <source file='/var/lib/libvirt/images/a'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-a-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='1'>
+ <format type='qcow2'/>
+ <source file='/var/lib/libvirt/images/b'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='2'>
+ <format type='qcow2'/>
+ <source protocol='gluster' name='images/c'>
+ <host name='test.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-c-s'/>
+ <nodename type='format' name='node-c-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='3'>
+ <format type='raw'/>
+ <source file='/var/lib/libvirt/images/d'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-d-s'/>
+ <nodename type='format' name='node-d-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ </backingStore>
+ </backingStore>
+ <target dev='vda'/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-c-f"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-d-f"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "node-name": "node-d-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='writeback'/>
+ <source file='/var/lib/libvirt/images/a'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-a-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='1'>
+ <format type='qcow2'/>
+ <source file='/var/lib/libvirt/images/b'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='2'>
+ <format type='qcow2'/>
+ <source protocol='gluster' name='images/c'>
+ <host name='test.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-c-s'/>
+ <nodename type='format' name='node-c-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='3'>
+ <format type='raw'/>
+ <source file='/var/lib/libvirt/images/d'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-d-s'/>
+ <nodename type='format' name='node-d-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ </backingStore>
+ </backingStore>
+ <target dev='vda'/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-a-f",
+ "read-only": false,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/a",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/b",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-c-f"
+}
+{
+ "node-name": "node-c-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "gluster",
+ "volume": "images",
+ "path": "c",
+ "server": [
+ {
+ "type": "inet",
+ "host": "test.org",
+ "port": "24007"
+ }
+ ],
+ "node-name": "node-c-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": "node-d-f"
+}
+{
+ "node-name": "node-d-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "driver": "raw",
+ "file": {
+ "driver": "file",
+ "filename": "/var/lib/libvirt/images/d",
+ "node-name": "node-d-s",
+ "cache": {
+ "direct": false,
+ "no-flush": false
+ },
+ "read-only": true,
+ "discard": "unmap"
+ }
+}
--- /dev/null
+<disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='writethrough'/>
+ <source file='/var/lib/libvirt/images/a'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-a-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='1'>
+ <format type='qcow2'/>
+ <source file='/var/lib/libvirt/images/b'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='2'>
+ <format type='qcow2'/>
+ <source protocol='gluster' name='images/c'>
+ <host name='test.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-c-s'/>
+ <nodename type='format' name='node-c-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='file' index='3'>
+ <format type='raw'/>
+ <source file='/var/lib/libvirt/images/d'>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-d-s'/>
+ <nodename type='format' name='node-d-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ </backingStore>
+ </backingStore>
+ <target dev='vda'/>
+</disk>
--- /dev/null
+{
+ "node-name": "node-b-f",
+ "read-only": false,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "rbd",
+ "pool": "rbdpool",
+ "image": "rbdimg",
+ "server": [
+ {
+ "host": "host1.example.com",
+ "port": "0"
+ },
+ {
+ "host": "host2.example.com",
+ "port": "0"
+ }
+ ],
+ "user": "testuser-rbd",
+ "node-name": "node-a-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": false,
+ "discard": "unmap"
+ },
+ "backing": "node-b-f"
+}
+{
+ "node-name": "node-b-f",
+ "read-only": true,
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "driver": "qcow2",
+ "file": {
+ "driver": "iscsi",
+ "portal": "example.org:3260",
+ "target": "iscsitarget",
+ "lun": 1,
+ "transport": "tcp",
+ "node-name": "node-b-s",
+ "cache": {
+ "direct": false,
+ "no-flush": true
+ },
+ "read-only": true,
+ "discard": "unmap"
+ },
+ "backing": null
+}
--- /dev/null
+<disk type='network' device='disk'>
+ <driver name='qemu' type='qcow2' cache='unsafe'/>
+ <source protocol='rbd' name='rbdpool/rbdimg'>
+ <host name='host1.example.com'/>
+ <host name='host2.example.com'/>
+ <auth username='testuser-rbd'>
+ <secret type='ceph' usage='testuser-rbd-secret'/>
+ </auth>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-a-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore type='network' index='1'>
+ <format type='qcow2'/>
+ <source protocol='iscsi' name='iscsitarget/1'>
+ <host name='example.org'/>
+ <privateData>
+ <nodenames>
+ <nodename type='storage' name='node-b-s'/>
+ <nodename type='format' name='node-b-f'/>
+ </nodenames>
+ </privateData>
+ </source>
+ <backingStore/>
+ </backingStore>
+ <target dev='vda' bus='virtio'/>
+ <alias name='virtio-disk0'/>
+</disk>