[libvirt] [PATCHv2 03/16] storage: match RNG to supported driver types

Doug Goldstein cardoe at gentoo.org
Mon Oct 15 02:58:55 UTC 2012


On Sat, Oct 13, 2012 at 4:59 PM, Eric Blake <eblake at redhat.com> wrote:
> At one point, the code passed through arbitrary strings for file
> formats, which supposedly lets qemu handle a new file type even
> before libvirt has been taught to handle it.  However, to properly
> label files, libvirt has to learn the file type anyway, so we
> might as well make our life easier by only accepting file types
> that we are prepared to handle.  This patch lets the RNG validation
> ensure that only known strings are let through.
>
> * docs/schemas/domaincommon.rng (driverFormat): Limit to list of
> supported strings.
> * docs/schemas/domainsnapshot.rng (driver): Likewise.
> ---
>  docs/schemas/domaincommon.rng   | 27 ++++++++++++++++++++++++---
>  docs/schemas/domainsnapshot.rng |  2 +-
>  2 files changed, 25 insertions(+), 4 deletions(-)
>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 70bc0e2..1bfebde 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -1188,11 +1188,32 @@
>        <ref name="genericName"/>
>      </attribute>
>      <optional>
> -      <attribute name="type">
> -        <ref name="genericName"/>
> +      <attribute name='type'>
> +        <choice>
> +          <ref name='diskFormat'/>
> +          <value>aio</value> <!-- back-compat for 'raw' -->
> +        </choice>
>        </attribute>
>      </optional>
>    </define>
> +  <define name='diskFormat'>
> +    <choice>
> +      <value>raw</value>
> +      <value>dir</value>
> +      <value>bochs</value>
> +      <value>cloop</value>
> +      <value>cow</value>
> +      <value>dmg</value>
> +      <value>iso</value>
> +      <value>qcow</value>
> +      <value>qcow2</value>
> +      <value>qed</value>
> +      <value>vmdk</value>
> +      <value>vpc</value>
> +      <value>fat</value>
> +      <value>vhd</value>
> +    </choice>
> +  </define>
>    <define name="driverCache">
>      <attribute name="cache">
>        <choice>
> @@ -3352,7 +3373,7 @@
>        </attribute>
>        <optional>
>          <attribute name='format'>
> -          <ref name="genericName"/>
> +          <ref name='diskFormat'/>
>          </attribute>
>        </optional>
>        <optional>
> diff --git a/docs/schemas/domainsnapshot.rng b/docs/schemas/domainsnapshot.rng
> index 0ef0631..ecaafe9 100644
> --- a/docs/schemas/domainsnapshot.rng
> +++ b/docs/schemas/domainsnapshot.rng
> @@ -105,7 +105,7 @@
>                <element name='driver'>
>                  <optional>
>                    <attribute name='type'>
> -                    <ref name='genericName'/>
> +                    <ref name='diskFormat'/>
>                    </attribute>
>                  </optional>
>                  <empty/>
> --

Again visually ACK.

-- 
Doug Goldstein




More information about the libvir-list mailing list