[Spice-devel] [PATCH spice] migration: set low_bandwidth if enable_jpeg
Yonit Halperin
yhalperi at redhat.com
Thu Apr 25 07:02:51 PDT 2013
Hi,
Good Catch!
Actually, the bandwidth is not getting evaluated after migration .
I think it is better, if we replace
display_channel_client_is_low_bandwidth with a boolean in the display
channel client that will be set once, when the channel is created (by
calling main_channel_client_is_low_bandwidth), or when the migration
data is retrieved, by copying the value in
migrate_data.low_bandwidth_setting. Other calls to
main_channel_client_is_low_bandwidth should be replaced with checking
this boolean(there are places that call
display_channel_client_is_low_bandwidth, and others that call
main_channel_client_is_low_bandwidth directly...argh....).
Cheers,
Yonit.
On 04/25/2013 07:37 AM, Marc-André Lureau wrote:
> The migration dest will use only the value of low_bandwidth to restore
> the surfaces with lossy settings. But the server estimates
> low_bandwidth on each connection, which might not be the same after
> each migration.
>
> Older origin servers will still be vulnerable to assert() on destination.
> To mitigate the issue, let's replace the assert with a warning.
>
> https://bugzilla.redhat.com/show_bug.cgi?id=956345
> ---
> server/red_worker.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/server/red_worker.c b/server/red_worker.c
> index 8ba8070..5c17b97 100644
> --- a/server/red_worker.c
> +++ b/server/red_worker.c
> @@ -8770,7 +8770,10 @@ static void display_channel_marshall_migrate_data(RedChannelClient *rcc,
> MIGRATE_DATA_DISPLAY_MAX_CACHE_CLIENTS == MAX_CACHE_CLIENTS);
>
> display_data.message_serial = red_channel_client_get_message_serial(rcc);
> - display_data.low_bandwidth_setting = display_channel_client_is_low_bandwidth(dcc);
> +
> + display_data.low_bandwidth_setting =
> + display_channel_client_is_low_bandwidth(dcc) |
> + display_channel->enable_jpeg;
>
> display_data.pixmap_cache_freezer = pixmap_cache_freeze(dcc->pixmap_cache);
> display_data.pixmap_cache_id = dcc->pixmap_cache->id;
> @@ -10110,7 +10113,7 @@ static void display_channel_client_restore_surface(DisplayChannelClient *dcc, ui
> {
> /* we don't process commands till we receive the migration data, thus,
> * we should have not sent any surface to the client. */
> - spice_assert(!dcc->surface_client_created[surface_id]);
> + spice_warn_if_fail(!dcc->surface_client_created[surface_id]);
> dcc->surface_client_created[surface_id] = TRUE;
> }
>
>
More information about the Spice-devel
mailing list