migration: Move migrate_use_zero_copy_send() to options.c
Once that we are there, we rename the function to migrate_zero_copy_send() to be consistent with all other capabilities. We can remove the CONFIG_LINUX guard. We already check that we can't setup this capability in migrate_caps_check(). Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
This commit is contained in:
parent
51b07548f7
commit
b4bc342c76
@ -1609,7 +1609,7 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_LINUX
|
#ifdef CONFIG_LINUX
|
||||||
if (migrate_use_zero_copy_send() &&
|
if (migrate_zero_copy_send() &&
|
||||||
((params->has_multifd_compression && params->multifd_compression) ||
|
((params->has_multifd_compression && params->multifd_compression) ||
|
||||||
(params->tls_creds && *params->tls_creds))) {
|
(params->tls_creds && *params->tls_creds))) {
|
||||||
error_setg(errp,
|
error_setg(errp,
|
||||||
@ -2595,17 +2595,6 @@ int migrate_multifd_zstd_level(void)
|
|||||||
return s->parameters.multifd_zstd_level;
|
return s->parameters.multifd_zstd_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_LINUX
|
|
||||||
bool migrate_use_zero_copy_send(void)
|
|
||||||
{
|
|
||||||
MigrationState *s;
|
|
||||||
|
|
||||||
s = migrate_get_current();
|
|
||||||
|
|
||||||
return s->capabilities[MIGRATION_CAPABILITY_ZERO_COPY_SEND];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int migrate_use_tls(void)
|
int migrate_use_tls(void)
|
||||||
{
|
{
|
||||||
MigrationState *s;
|
MigrationState *s;
|
||||||
|
@ -454,11 +454,6 @@ MultiFDCompression migrate_multifd_compression(void);
|
|||||||
int migrate_multifd_zlib_level(void);
|
int migrate_multifd_zlib_level(void);
|
||||||
int migrate_multifd_zstd_level(void);
|
int migrate_multifd_zstd_level(void);
|
||||||
|
|
||||||
#ifdef CONFIG_LINUX
|
|
||||||
bool migrate_use_zero_copy_send(void);
|
|
||||||
#else
|
|
||||||
#define migrate_use_zero_copy_send() (false)
|
|
||||||
#endif
|
|
||||||
int migrate_use_tls(void);
|
int migrate_use_tls(void);
|
||||||
int migrate_use_xbzrle(void);
|
int migrate_use_xbzrle(void);
|
||||||
uint64_t migrate_xbzrle_cache_size(void);
|
uint64_t migrate_xbzrle_cache_size(void);
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
#include "trace.h"
|
#include "trace.h"
|
||||||
#include "multifd.h"
|
#include "multifd.h"
|
||||||
#include "threadinfo.h"
|
#include "threadinfo.h"
|
||||||
|
#include "options.h"
|
||||||
#include "qemu/yank.h"
|
#include "qemu/yank.h"
|
||||||
#include "io/channel-socket.h"
|
#include "io/channel-socket.h"
|
||||||
#include "yank_functions.h"
|
#include "yank_functions.h"
|
||||||
@ -608,7 +608,7 @@ int multifd_send_sync_main(QEMUFile *f)
|
|||||||
* all the dirty bitmaps.
|
* all the dirty bitmaps.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
flush_zero_copy = migrate_use_zero_copy_send();
|
flush_zero_copy = migrate_zero_copy_send();
|
||||||
|
|
||||||
for (i = 0; i < migrate_multifd_channels(); i++) {
|
for (i = 0; i < migrate_multifd_channels(); i++) {
|
||||||
MultiFDSendParams *p = &multifd_send_state->params[i];
|
MultiFDSendParams *p = &multifd_send_state->params[i];
|
||||||
@ -653,7 +653,7 @@ static void *multifd_send_thread(void *opaque)
|
|||||||
MigrationThread *thread = NULL;
|
MigrationThread *thread = NULL;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
bool use_zero_copy_send = migrate_use_zero_copy_send();
|
bool use_zero_copy_send = migrate_zero_copy_send();
|
||||||
|
|
||||||
thread = MigrationThreadAdd(p->name, qemu_get_thread_id());
|
thread = MigrationThreadAdd(p->name, qemu_get_thread_id());
|
||||||
|
|
||||||
@ -945,7 +945,7 @@ int multifd_save_setup(Error **errp)
|
|||||||
p->page_size = qemu_target_page_size();
|
p->page_size = qemu_target_page_size();
|
||||||
p->page_count = page_count;
|
p->page_count = page_count;
|
||||||
|
|
||||||
if (migrate_use_zero_copy_send()) {
|
if (migrate_zero_copy_send()) {
|
||||||
p->write_flags = QIO_CHANNEL_WRITE_FLAG_ZERO_COPY;
|
p->write_flags = QIO_CHANNEL_WRITE_FLAG_ZERO_COPY;
|
||||||
} else {
|
} else {
|
||||||
p->write_flags = 0;
|
p->write_flags = 0;
|
||||||
|
@ -155,3 +155,12 @@ bool migrate_zero_blocks(void)
|
|||||||
|
|
||||||
return s->capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS];
|
return s->capabilities[MIGRATION_CAPABILITY_ZERO_BLOCKS];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool migrate_zero_copy_send(void)
|
||||||
|
{
|
||||||
|
MigrationState *s;
|
||||||
|
|
||||||
|
s = migrate_get_current();
|
||||||
|
|
||||||
|
return s->capabilities[MIGRATION_CAPABILITY_ZERO_COPY_SEND];
|
||||||
|
}
|
||||||
|
@ -32,5 +32,6 @@ bool migrate_postcopy_ram(void);
|
|||||||
bool migrate_release_ram(void);
|
bool migrate_release_ram(void);
|
||||||
bool migrate_validate_uuid(void);
|
bool migrate_validate_uuid(void);
|
||||||
bool migrate_zero_blocks(void);
|
bool migrate_zero_blocks(void);
|
||||||
|
bool migrate_zero_copy_send(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -98,7 +98,7 @@ static void socket_outgoing_migration(QIOTask *task,
|
|||||||
|
|
||||||
trace_migration_socket_outgoing_connected(data->hostname);
|
trace_migration_socket_outgoing_connected(data->hostname);
|
||||||
|
|
||||||
if (migrate_use_zero_copy_send() &&
|
if (migrate_zero_copy_send() &&
|
||||||
!qio_channel_has_feature(sioc, QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY)) {
|
!qio_channel_has_feature(sioc, QIO_CHANNEL_FEATURE_WRITE_ZERO_COPY)) {
|
||||||
error_setg(&err, "Zero copy send feature not detected in host kernel");
|
error_setg(&err, "Zero copy send feature not detected in host kernel");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user