storage: fix RNG validation of gluster via netfs

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@redhat.com>
This commit is contained in:
Eric Blake 2013-11-12 16:35:36 -07:00
parent 8d7800a554
commit 887dd3625b
5 changed files with 43 additions and 6 deletions

View File

@ -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>

View File

@ -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 @@
&lt;source&gt;
&lt;host name="nfs.example.com"/&gt;
&lt;dir path="/var/lib/virt/images"/&gt;
&lt;format type='nfs'/&gt;
&lt;/source&gt;
&lt;target&gt;
&lt;path&gt;/var/lib/virt/images&lt;/path&gt;
@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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");