Skip to content
Snippets Groups Projects
  • Leonardo Bras's avatar
    90eb69e4
    migration: Avoid false-positive on non-supported scenarios for zero-copy-send · 90eb69e4
    Leonardo Bras authored
    
    Migration with zero-copy-send currently has it's limitations, as it can't
    be used with TLS nor any kind of compression. In such scenarios, it should
    output errors during parameter / capability setting.
    
    But currently there are some ways of setting this not-supported scenarios
    without printing the error message:
    
    !) For 'compression' capability, it works by enabling it together with
    zero-copy-send. This happens because the validity test for zero-copy uses
    the helper unction migrate_use_compression(), which check for compression
    presence in s->enabled_capabilities[MIGRATION_CAPABILITY_COMPRESS].
    
    The point here is: the validity test happens before the capability gets
    enabled. If all of them get enabled together, this test will not return
    error.
    
    In order to fix that, replace migrate_use_compression() by directly testing
    the cap_list parameter migrate_caps_check().
    
    2) For features enabled by parameters such as TLS & 'multifd_compression',
    there was also a possibility of setting non-supported scenarios: setting
    zero-copy-send first, then setting the unsupported parameter.
    
    In order to fix that, also add a check for parameters conflicting with
    zero-copy-send on migrate_params_check().
    
    3) XBZRLE is also a compression capability, so it makes sense to also add
    it to the list of capabilities which are not supported with zero-copy-send.
    
    Fixes: 1abaec9a ("migration: Change zero_copy_send from migration parameter to migration capability")
    Signed-off-by: default avatarLeonardo Bras <leobras@redhat.com>
    Message-Id: <20220719122345.253713-1-leobras@redhat.com>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    90eb69e4
    History
    migration: Avoid false-positive on non-supported scenarios for zero-copy-send
    Leonardo Bras authored
    
    Migration with zero-copy-send currently has it's limitations, as it can't
    be used with TLS nor any kind of compression. In such scenarios, it should
    output errors during parameter / capability setting.
    
    But currently there are some ways of setting this not-supported scenarios
    without printing the error message:
    
    !) For 'compression' capability, it works by enabling it together with
    zero-copy-send. This happens because the validity test for zero-copy uses
    the helper unction migrate_use_compression(), which check for compression
    presence in s->enabled_capabilities[MIGRATION_CAPABILITY_COMPRESS].
    
    The point here is: the validity test happens before the capability gets
    enabled. If all of them get enabled together, this test will not return
    error.
    
    In order to fix that, replace migrate_use_compression() by directly testing
    the cap_list parameter migrate_caps_check().
    
    2) For features enabled by parameters such as TLS & 'multifd_compression',
    there was also a possibility of setting non-supported scenarios: setting
    zero-copy-send first, then setting the unsupported parameter.
    
    In order to fix that, also add a check for parameters conflicting with
    zero-copy-send on migrate_params_check().
    
    3) XBZRLE is also a compression capability, so it makes sense to also add
    it to the list of capabilities which are not supported with zero-copy-send.
    
    Fixes: 1abaec9a ("migration: Change zero_copy_send from migration parameter to migration capability")
    Signed-off-by: default avatarLeonardo Bras <leobras@redhat.com>
    Message-Id: <20220719122345.253713-1-leobras@redhat.com>
    Reviewed-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: default avatarDr. David Alan Gilbert <dgilbert@redhat.com>