While trying to compare netfs against my new gluster pool, I discovered two things: virt-xml-validate chokes on valid xml produced by 'virsh pool-dumpxml' [yet another reason that ALL patches that add new xml should be adding corresponding tests] When using glusterfs FUSE mounts, you cannot access a subdirectory of a gluster volume. The recommended workaround in the gluster community is to mount the volume to an intermediate location, then bind-mount the desired subdirectory to the final location. Maybe we should teach libvirt to do bind-mounting, but for now I chose to just document the limitation. * docs/storage.html.in: Improve documentation. * docs/schemas/storagepool.rng (sourcefmtnetfs): Allow all formats, and drop redundant info-vendor. * tests/storagepoolxml2xmltest.c (mymain): New test. * tests/storagepoolxml2xmlin/pool-netfs-gluster.xml: New file. * tests/storagepoolxml2xmlout/pool-netfs-gluster.xml: Likewise. Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> --- We added glusterfs support to netfs pools in 2009 (commit 2562303); it's been broken for quite some time :( docs/schemas/storagepool.rng | 5 ++--- docs/storage.html.in | 11 ++++++++--- tests/storagepoolxml2xmlin/pool-netfs-gluster.xml | 12 ++++++++++++ tests/storagepoolxml2xmlout/pool-netfs-gluster.xml | 20 ++++++++++++++++++++ tests/storagepoolxml2xmltest.c | 1 + 5 files changed, 43 insertions(+), 6 deletions(-) create mode 100644 tests/storagepoolxml2xmlin/pool-netfs-gluster.xml create mode 100644 tests/storagepoolxml2xmlout/pool-netfs-gluster.xml diff --git a/docs/schemas/storagepool.rng b/docs/schemas/storagepool.rng index 66d3c22..61fa7a3 100644 --- a/docs/schemas/storagepool.rng +++ b/docs/schemas/storagepool.rng @@ -381,11 +381,10 @@ <choice> <value>auto</value> <value>nfs</value> + <value>cifs</value> + <value>glusterfs</value> </choice> </attribute> - <optional> - <ref name='sourceinfovendor'/> - </optional> </element> </optional> </define> diff --git a/docs/storage.html.in b/docs/storage.html.in index 1181444..0464565 100644 --- a/docs/storage.html.in +++ b/docs/storage.html.in @@ -249,7 +249,8 @@ a local block device as the source, it requires the name of a host and path of an exported directory. It will mount this network filesystem and manage files within the directory of its mount - point. It will default to using NFS as the protocol. + point. It will default to using <code>auto</code> as the + protocol, which generally tries a mount via NFS first. </p> <h3>Example pool input</h3> @@ -259,6 +260,7 @@ <source> <host name="nfs.example.com"/> <dir path="/var/lib/virt/images"/> + <format type='nfs'/> </source> <target> <path>/var/lib/virt/images</path> @@ -275,10 +277,13 @@ <code>nfs</code> </li> <li> - <code>glusterfs</code> + <code>glusterfs</code> - use the glusterfs FUSE file system. + For now, the <code>dir</code> specified as the source can only + be a gluster volume name, as gluster does not provide a way to + directly mount subdirectories within a volume. </li> <li> - <code>cifs</code> + <code>cifs</code> - use the SMB (samba) or CIFS file system </li> </ul> diff --git a/tests/storagepoolxml2xmlin/pool-netfs-gluster.xml b/tests/storagepoolxml2xmlin/pool-netfs-gluster.xml new file mode 100644 index 0000000..9b39e87 --- /dev/null +++ b/tests/storagepoolxml2xmlin/pool-netfs-gluster.xml @@ -0,0 +1,12 @@ +<pool type='netfs'> + <source> + <host name='example.com'/> + <format type='glusterfs'/> + <dir path='/volume'/> + </source> + <name>netfs-gluster</name> + <uuid>d5609ced-94b1-489e-b218-eff35c30336a</uuid> + <target> + <path>/mnt/gluster</path> + </target> +</pool> diff --git a/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml new file mode 100644 index 0000000..bab2a15 --- /dev/null +++ b/tests/storagepoolxml2xmlout/pool-netfs-gluster.xml @@ -0,0 +1,20 @@ +<pool type='netfs'> + <name>netfs-gluster</name> + <uuid>d5609ced-94b1-489e-b218-eff35c30336a</uuid> + <capacity unit='bytes'>0</capacity> + <allocation unit='bytes'>0</allocation> + <available unit='bytes'>0</available> + <source> + <host name='example.com'/> + <dir path='/volume'/> + <format type='glusterfs'/> + </source> + <target> + <path>/mnt/gluster</path> + <permissions> + <mode>0755</mode> + <owner>-1</owner> + <group>-1</group> + </permissions> + </target> +</pool> diff --git a/tests/storagepoolxml2xmltest.c b/tests/storagepoolxml2xmltest.c index 0ae9b29..743e1cb 100644 --- a/tests/storagepoolxml2xmltest.c +++ b/tests/storagepoolxml2xmltest.c @@ -93,6 +93,7 @@ mymain(void) DO_TEST("pool-iscsi"); DO_TEST("pool-iscsi-auth"); DO_TEST("pool-netfs"); + DO_TEST("pool-netfs-gluster"); DO_TEST("pool-scsi"); DO_TEST("pool-scsi-type-scsi-host"); DO_TEST("pool-scsi-type-fc-host"); -- 1.8.3.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list