[libvirt] [PATCH 2/2] spice: expose the QEMU disable file transfer option

Christophe Fergeau cfergeau at redhat.com
Mon Jan 13 11:58:30 UTC 2014


Hi,

On Fri, Jan 10, 2014 at 06:21:50PM +0100, Francesco Romani wrote:
> spice-server offers an API to disable file transfer messages
> on the agent channel between the client and the guest.
> This is supported in qemu through the disable-agent-file-xfer option.
> 
> This patch exposes this option to libvirt.
> Adds a new element 'filetransfer', with one property,
> 'filetransfer', which accepts a boolean setting.
> Default is enabled.
> 
> Depends on the capability exported in the first patch of the series.
> ---
>  docs/formatdomain.html.in                          |  8 +++++
>  docs/schemas/domaincommon.rng                      | 11 ++++++
>  src/conf/domain_conf.c                             | 31 ++++++++++++++++-
>  src/conf/domain_conf.h                             | 10 ++++++
>  src/libvirt_private.syms                           |  2 ++
>  src/qemu/qemu_command.c                            |  9 +++++
>  ...emuxml2argv-graphics-spice-agent-file-xfer.args |  9 +++++
>  ...qemuxml2argv-graphics-spice-agent-file-xfer.xml | 40 ++++++++++++++++++++++
>  .../qemuxml2argv-graphics-spice.args               |  5 +--
>  .../qemuxml2argv-graphics-spice.xml                |  1 +
>  tests/qemuxml2argvtest.c                           |  9 ++++-
>  11 files changed, 131 insertions(+), 4 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-agent-file-xfer.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-graphics-spice-agent-file-xfer.xml
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 68860ef..c11a7d3 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -4042,6 +4042,7 @@ qemu-kvm -net nic,model=? /dev/null
>      <streaming mode='filter'/>
>      <clipboard copypaste='no'/>
>      <mouse mode='client'/>
> +    <filetransfer enable='no'/>
>    </graphics></pre>
>              <p>
>                Spice supports variable compression settings for audio,
> @@ -4081,6 +4082,13 @@ qemu-kvm -net nic,model=? /dev/null
>                <span class="since">since 0.9.11</span>. If no mode is
>                specified, the qemu default will be used (client mode).
>              </p>
> +            <p>
> +              File transfer functionality (via Spice agent) is set using the
> +              <code>filetransfer</code> element.
> +              It is enabled by default, and can be disabled by setting the
> +              <code>enable</code> property to <code>no</code> ,
> +              since <span class="since">since 1.2.2</span>.
> +            </p>
>            </dd>
>            <dt><code>"rdp"</code></dt>
>            <dd>
> diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng
> index 86a60c9..cd2c499 100644
> --- a/docs/schemas/domaincommon.rng
> +++ b/docs/schemas/domaincommon.rng
> @@ -2468,6 +2468,17 @@
>                  <empty/>
>                </element>
>              </optional>
> +            <optional>
> +              <element name="filetransfer">
> +                <attribute name="enable">
> +                  <choice>
> +                    <value>yes</value>
> +                    <value>no</value>
> +                  </choice>
> +                </attribute>
> +                <empty/>
> +              </element>
> +            </optional>
>            </interleave>
>          </group>
>          <group>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 416d96e..f372406 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -604,6 +604,12 @@ VIR_ENUM_IMPL(virDomainGraphicsSpiceClipboardCopypaste,
>                "yes",
>                "no");
>  
> +VIR_ENUM_IMPL(virDomainGraphicsSpiceAgentFileTransfer,
> +              VIR_DOMAIN_GRAPHICS_SPICE_AGENT_FILE_TRANSFER_LAST,
> +              "default",
> +              "yes",
> +              "no");
> +
>  VIR_ENUM_IMPL(virDomainHostdevMode, VIR_DOMAIN_HOSTDEV_MODE_LAST,
>                "subsystem",
>                "capabilities")
> @@ -8519,6 +8525,26 @@ virDomainGraphicsDefParseXML(xmlNodePtr node,
>                      VIR_FREE(copypaste);
>  
>                      def->data.spice.copypaste = copypasteVal;
> +                } else if (xmlStrEqual(cur->name, BAD_CAST "filetransfer")) {
> +                    char *enable = virXMLPropString(cur, "enable");
> +                    int enableVal;
> +
> +                    if (!enable) {
> +                        virReportError(VIR_ERR_XML_ERROR, "%s",
> +                                       _("spice filetransfer missing enable"));
> +                        goto error;
> +                    }
> +
> +                    if ((enableVal =
> +                         virDomainGraphicsSpiceAgentFileTransferTypeFromString(enable)) <= 0) {
> +                        virReportError(VIR_ERR_XML_ERROR,

It turns out this one should be _CONFIG_UNSUPPORTED, see
https://www.redhat.com/archives/libvir-list/2014-January/msg00521.html . Sorry for giving you a
wrong advice on this before.
ACK from me if you squash this change in before pushing. This will have to
wait after 1.2.1 release though.

Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140113/1161613f/attachment-0001.sig>


More information about the libvir-list mailing list