[Spice-devel] [PATCH 1/1] Add API to turn on backwards compatibility mode
Alon Levy
alevy at redhat.com
Thu Aug 26 06:26:37 PDT 2010
----- alexl at redhat.com wrote:
> From: Alexander Larsson <alexl at redhat.com>
>
> When upgrading a cluster of machines you typically do this by
> upgrading a set of machines at a time, making the new machines run
> the new software version, but in a fashion compatible with the old
> versions (in terms of e.g. migration). Then when all machines are
missing word here: migrated?
> any new features in the new version can be enabled.
>
> This API allows qemu to limit the set of features that spice uses to
> those compatible with an older version, in order to do an upgrade
> like
> this. Right now it doesn't really do much, since we don't keep compat
> with 0.4.0 atm (although that may be added later).
>
> There is no guarantee that any future version of spice support
> being compatible with any previous version. However, we will always
> support compatibility with the previous major version so that
> clusters
> can be upgraded step by step.
> ---
> server/reds.c | 20 ++++++++++++++++++++
> server/spice.h | 13 +++++++++++++
> 2 files changed, 33 insertions(+), 0 deletions(-)
>
> diff --git a/server/reds.c b/server/reds.c
> index b7c6ce7..68e0bc2 100644
> --- a/server/reds.c
> +++ b/server/reds.c
> @@ -3736,6 +3736,26 @@ __visible__ void
> spice_server_destroy(SpiceServer *s)
> reds_exit();
> }
>
> +__visible__ spice_compat_version_t
> spice_get_current_compat_version(void)
> +{
> + return SPICE_COMPAT_VERSION_CURRENT;
> +}
> +
> +__visible__ int spice_server_set_compat_version(SpiceServer *s,
> +
> spice_compat_version_t version)
> +{
> + if (version < SPICE_COMPAT_VERSION_0_6) {
> + /* We don't support 0.4 compat mode atm */
> + return -1;
> + }
> +
> + if (version > SPICE_COMPAT_VERSION_CURRENT) {
> + /* Not compatible with future versions */
> + return -1;
> + }
> + return 0;
> +}
> +
> __visible__ int spice_server_set_port(SpiceServer *s, int port)
> {
> ASSERT(reds == s);
> diff --git a/server/spice.h b/server/spice.h
> index fc7d5b5..bb1f828 100644
> --- a/server/spice.h
> +++ b/server/spice.h
> @@ -307,6 +307,17 @@ uint32_t
> spice_server_record_get_samples(SpiceRecordInstance *sin,
>
> /* spice server setup */
>
> +/* Don't use features incompatible with a specific spice
> + version, so that migration to/from that version works. */
> +typedef enum {
> + SPICE_COMPAT_VERSION_0_4 = 0,
> + SPICE_COMPAT_VERSION_0_6 = 1,
> +} spice_compat_version_t;
> +
> +#define SPICE_COMPAT_VERSION_CURRENT SPICE_COMPAT_VERSION_0_6
> +
> +spice_compat_version_t spice_get_current_compat_version(void);
> +
> typedef struct RedsState SpiceServer;
> SpiceServer *spice_server_new(void);
> int spice_server_init(SpiceServer *s, SpiceCoreInterface *core);
> @@ -315,6 +326,8 @@ void spice_server_destroy(SpiceServer *s);
> #define SPICE_ADDR_FLAG_IPV4_ONLY (1 << 0)
> #define SPICE_ADDR_FLAG_IPV6_ONLY (1 << 1)
>
> +int spice_server_set_compat_version(SpiceServer *s,
> + spice_compat_version_t version);
> int spice_server_set_port(SpiceServer *s, int port);
> void spice_server_set_addr(SpiceServer *s, const char *addr, int
> flags);
> int spice_server_set_noauth(SpiceServer *s);
> --
> 1.7.0.1
>
ACK
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel
More information about the Spice-devel
mailing list