* [PATCH v2 2/7] migration/multifd: Remove QEMUFile from where it is not needed
2024-01-04 14:21 [PATCH v2 0/7] migration cleanups and testing improvements Fabiano Rosas
2024-01-04 14:21 ` [PATCH v2 1/7] migration/multifd: Remove MultiFDPages_t::packet_num Fabiano Rosas
@ 2024-01-04 14:21 ` Fabiano Rosas
2024-01-04 14:21 ` [PATCH v2 3/7] migration/multifd: Change multifd_pages_init argument Fabiano Rosas
` (5 subsequent siblings)
7 siblings, 0 replies; 9+ messages in thread
From: Fabiano Rosas @ 2024-01-04 14:21 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Xu
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Peter Xu <peterx@redhat.com>
---
migration/multifd.c | 12 ++++++------
migration/multifd.h | 4 ++--
migration/ram.c | 15 +++++++--------
3 files changed, 15 insertions(+), 16 deletions(-)
diff --git a/migration/multifd.c b/migration/multifd.c
index 3e650f5da0..2dbc3ba836 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -390,7 +390,7 @@ struct {
* false.
*/
-static int multifd_send_pages(QEMUFile *f)
+static int multifd_send_pages(void)
{
int i;
static int next_channel;
@@ -436,7 +436,7 @@ static int multifd_send_pages(QEMUFile *f)
return 1;
}
-int multifd_queue_page(QEMUFile *f, RAMBlock *block, ram_addr_t offset)
+int multifd_queue_page(RAMBlock *block, ram_addr_t offset)
{
MultiFDPages_t *pages = multifd_send_state->pages;
bool changed = false;
@@ -456,12 +456,12 @@ int multifd_queue_page(QEMUFile *f, RAMBlock *block, ram_addr_t offset)
changed = true;
}
- if (multifd_send_pages(f) < 0) {
+ if (multifd_send_pages() < 0) {
return -1;
}
if (changed) {
- return multifd_queue_page(f, block, offset);
+ return multifd_queue_page(block, offset);
}
return 1;
@@ -583,7 +583,7 @@ static int multifd_zero_copy_flush(QIOChannel *c)
return ret;
}
-int multifd_send_sync_main(QEMUFile *f)
+int multifd_send_sync_main(void)
{
int i;
bool flush_zero_copy;
@@ -592,7 +592,7 @@ int multifd_send_sync_main(QEMUFile *f)
return 0;
}
if (multifd_send_state->pages->num) {
- if (multifd_send_pages(f) < 0) {
+ if (multifd_send_pages() < 0) {
error_report("%s: multifd_send_pages fail", __func__);
return -1;
}
diff --git a/migration/multifd.h b/migration/multifd.h
index b0ff610c37..35d11f103c 100644
--- a/migration/multifd.h
+++ b/migration/multifd.h
@@ -21,8 +21,8 @@ void multifd_load_shutdown(void);
bool multifd_recv_all_channels_created(void);
void multifd_recv_new_channel(QIOChannel *ioc, Error **errp);
void multifd_recv_sync_main(void);
-int multifd_send_sync_main(QEMUFile *f);
-int multifd_queue_page(QEMUFile *f, RAMBlock *block, ram_addr_t offset);
+int multifd_send_sync_main(void);
+int multifd_queue_page(RAMBlock *block, ram_addr_t offset);
/* Multifd Compression flags */
#define MULTIFD_FLAG_SYNC (1 << 0)
diff --git a/migration/ram.c b/migration/ram.c
index 8c7886ab79..b4f2f5108f 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -1250,10 +1250,9 @@ static int ram_save_page(RAMState *rs, PageSearchStatus *pss)
return pages;
}
-static int ram_save_multifd_page(QEMUFile *file, RAMBlock *block,
- ram_addr_t offset)
+static int ram_save_multifd_page(RAMBlock *block, ram_addr_t offset)
{
- if (multifd_queue_page(file, block, offset) < 0) {
+ if (multifd_queue_page(block, offset) < 0) {
return -1;
}
stat64_add(&mig_stats.normal_pages, 1);
@@ -1336,7 +1335,7 @@ static int find_dirty_block(RAMState *rs, PageSearchStatus *pss)
if (migrate_multifd() &&
!migrate_multifd_flush_after_each_section()) {
QEMUFile *f = rs->pss[RAM_CHANNEL_PRECOPY].pss_channel;
- int ret = multifd_send_sync_main(f);
+ int ret = multifd_send_sync_main();
if (ret < 0) {
return ret;
}
@@ -2067,7 +2066,7 @@ static int ram_save_target_page_legacy(RAMState *rs, PageSearchStatus *pss)
* still see partially copied pages which is data corruption.
*/
if (migrate_multifd() && !migration_in_postcopy()) {
- return ram_save_multifd_page(pss->pss_channel, block, offset);
+ return ram_save_multifd_page(block, offset);
}
return ram_save_page(rs, pss);
@@ -2985,7 +2984,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
migration_ops->ram_save_target_page = ram_save_target_page_legacy;
qemu_mutex_unlock_iothread();
- ret = multifd_send_sync_main(f);
+ ret = multifd_send_sync_main();
qemu_mutex_lock_iothread();
if (ret < 0) {
return ret;
@@ -3109,7 +3108,7 @@ out:
if (ret >= 0
&& migration_is_setup_or_active(migrate_get_current()->state)) {
if (migrate_multifd() && migrate_multifd_flush_after_each_section()) {
- ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
+ ret = multifd_send_sync_main();
if (ret < 0) {
return ret;
}
@@ -3183,7 +3182,7 @@ static int ram_save_complete(QEMUFile *f, void *opaque)
}
}
- ret = multifd_send_sync_main(rs->pss[RAM_CHANNEL_PRECOPY].pss_channel);
+ ret = multifd_send_sync_main();
if (ret < 0) {
return ret;
}
--
2.35.3
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [PATCH v2 7/7] tests/qtest/migration: Use the new migration_test_add
2024-01-04 14:21 [PATCH v2 0/7] migration cleanups and testing improvements Fabiano Rosas
` (5 preceding siblings ...)
2024-01-04 14:21 ` [PATCH v2 6/7] tests/qtest/migration: Add a wrapper to print test names Fabiano Rosas
@ 2024-01-04 14:21 ` Fabiano Rosas
2024-01-05 2:00 ` [PATCH v2 0/7] migration cleanups and testing improvements Peter Xu
7 siblings, 0 replies; 9+ messages in thread
From: Fabiano Rosas @ 2024-01-04 14:21 UTC (permalink / raw)
To: qemu-devel; +Cc: Peter Xu, Thomas Huth, Laurent Vivier, Paolo Bonzini
Replace the tests registration with the new function that prints tests
names.
Signed-off-by: Fabiano Rosas <farosas@suse.de>
Reviewed-by: Peter Xu <peterx@redhat.com>
---
tests/qtest/migration-test.c | 215 ++++++++++++++++++-----------------
1 file changed, 112 insertions(+), 103 deletions(-)
diff --git a/tests/qtest/migration-test.c b/tests/qtest/migration-test.c
index 136e5df06c..21da140aea 100644
--- a/tests/qtest/migration-test.c
+++ b/tests/qtest/migration-test.c
@@ -3404,70 +3404,75 @@ int main(int argc, char **argv)
module_call_init(MODULE_INIT_QOM);
if (is_x86) {
- qtest_add_func("/migration/precopy/unix/suspend/live",
- test_precopy_unix_suspend_live);
- qtest_add_func("/migration/precopy/unix/suspend/notlive",
- test_precopy_unix_suspend_notlive);
+ migration_test_add("/migration/precopy/unix/suspend/live",
+ test_precopy_unix_suspend_live);
+ migration_test_add("/migration/precopy/unix/suspend/notlive",
+ test_precopy_unix_suspend_notlive);
}
if (has_uffd) {
- qtest_add_func("/migration/postcopy/plain", test_postcopy);
- qtest_add_func("/migration/postcopy/recovery/plain",
- test_postcopy_recovery);
- qtest_add_func("/migration/postcopy/preempt/plain", test_postcopy_preempt);
- qtest_add_func("/migration/postcopy/preempt/recovery/plain",
- test_postcopy_preempt_recovery);
+ migration_test_add("/migration/postcopy/plain", test_postcopy);
+ migration_test_add("/migration/postcopy/recovery/plain",
+ test_postcopy_recovery);
+ migration_test_add("/migration/postcopy/preempt/plain",
+ test_postcopy_preempt);
+ migration_test_add("/migration/postcopy/preempt/recovery/plain",
+ test_postcopy_preempt_recovery);
if (getenv("QEMU_TEST_FLAKY_TESTS")) {
- qtest_add_func("/migration/postcopy/compress/plain",
- test_postcopy_compress);
- qtest_add_func("/migration/postcopy/recovery/compress/plain",
- test_postcopy_recovery_compress);
+ migration_test_add("/migration/postcopy/compress/plain",
+ test_postcopy_compress);
+ migration_test_add("/migration/postcopy/recovery/compress/plain",
+ test_postcopy_recovery_compress);
}
#ifndef _WIN32
- qtest_add_func("/migration/postcopy/recovery/double-failures",
- test_postcopy_recovery_double_fail);
+ migration_test_add("/migration/postcopy/recovery/double-failures",
+ test_postcopy_recovery_double_fail);
#endif /* _WIN32 */
if (is_x86) {
- qtest_add_func("/migration/postcopy/suspend",
- test_postcopy_suspend);
+ migration_test_add("/migration/postcopy/suspend",
+ test_postcopy_suspend);
}
}
- qtest_add_func("/migration/bad_dest", test_baddest);
+ migration_test_add("/migration/bad_dest", test_baddest);
#ifndef _WIN32
- qtest_add_func("/migration/analyze-script", test_analyze_script);
+ if (!g_str_equal(arch, "s390x")) {
+ migration_test_add("/migration/analyze-script", test_analyze_script);
+ }
#endif
- qtest_add_func("/migration/precopy/unix/plain", test_precopy_unix_plain);
- qtest_add_func("/migration/precopy/unix/xbzrle", test_precopy_unix_xbzrle);
+ migration_test_add("/migration/precopy/unix/plain",
+ test_precopy_unix_plain);
+ migration_test_add("/migration/precopy/unix/xbzrle",
+ test_precopy_unix_xbzrle);
/*
* Compression fails from time to time.
* Put test here but don't enable it until everything is fixed.
*/
if (getenv("QEMU_TEST_FLAKY_TESTS")) {
- qtest_add_func("/migration/precopy/unix/compress/wait",
- test_precopy_unix_compress);
- qtest_add_func("/migration/precopy/unix/compress/nowait",
- test_precopy_unix_compress_nowait);
+ migration_test_add("/migration/precopy/unix/compress/wait",
+ test_precopy_unix_compress);
+ migration_test_add("/migration/precopy/unix/compress/nowait",
+ test_precopy_unix_compress_nowait);
}
- qtest_add_func("/migration/precopy/file",
- test_precopy_file);
- qtest_add_func("/migration/precopy/file/offset",
- test_precopy_file_offset);
- qtest_add_func("/migration/precopy/file/offset/bad",
- test_precopy_file_offset_bad);
+ migration_test_add("/migration/precopy/file",
+ test_precopy_file);
+ migration_test_add("/migration/precopy/file/offset",
+ test_precopy_file_offset);
+ migration_test_add("/migration/precopy/file/offset/bad",
+ test_precopy_file_offset_bad);
/*
* Our CI system has problems with shared memory.
* Don't run this test until we find a workaround.
*/
if (getenv("QEMU_TEST_FLAKY_TESTS")) {
- qtest_add_func("/migration/mode/reboot", test_mode_reboot);
+ migration_test_add("/migration/mode/reboot", test_mode_reboot);
}
#ifdef CONFIG_GNUTLS
- qtest_add_func("/migration/precopy/unix/tls/psk",
- test_precopy_unix_tls_psk);
+ migration_test_add("/migration/precopy/unix/tls/psk",
+ test_precopy_unix_tls_psk);
if (has_uffd) {
/*
@@ -3475,110 +3480,114 @@ int main(int argc, char **argv)
* channels are tested under precopy. Here what we want to test is the
* general postcopy path that has TLS channel enabled.
*/
- qtest_add_func("/migration/postcopy/tls/psk", test_postcopy_tls_psk);
- qtest_add_func("/migration/postcopy/recovery/tls/psk",
- test_postcopy_recovery_tls_psk);
- qtest_add_func("/migration/postcopy/preempt/tls/psk",
- test_postcopy_preempt_tls_psk);
- qtest_add_func("/migration/postcopy/preempt/recovery/tls/psk",
- test_postcopy_preempt_all);
+ migration_test_add("/migration/postcopy/tls/psk",
+ test_postcopy_tls_psk);
+ migration_test_add("/migration/postcopy/recovery/tls/psk",
+ test_postcopy_recovery_tls_psk);
+ migration_test_add("/migration/postcopy/preempt/tls/psk",
+ test_postcopy_preempt_tls_psk);
+ migration_test_add("/migration/postcopy/preempt/recovery/tls/psk",
+ test_postcopy_preempt_all);
}
#ifdef CONFIG_TASN1
- qtest_add_func("/migration/precopy/unix/tls/x509/default-host",
- test_precopy_unix_tls_x509_default_host);
- qtest_add_func("/migration/precopy/unix/tls/x509/override-host",
- test_precopy_unix_tls_x509_override_host);
+ migration_test_add("/migration/precopy/unix/tls/x509/default-host",
+ test_precopy_unix_tls_x509_default_host);
+ migration_test_add("/migration/precopy/unix/tls/x509/override-host",
+ test_precopy_unix_tls_x509_override_host);
#endif /* CONFIG_TASN1 */
#endif /* CONFIG_GNUTLS */
- qtest_add_func("/migration/precopy/tcp/plain", test_precopy_tcp_plain);
+ migration_test_add("/migration/precopy/tcp/plain", test_precopy_tcp_plain);
- qtest_add_func("/migration/precopy/tcp/plain/switchover-ack",
- test_precopy_tcp_switchover_ack);
+ migration_test_add("/migration/precopy/tcp/plain/switchover-ack",
+ test_precopy_tcp_switchover_ack);
#ifdef CONFIG_GNUTLS
- qtest_add_func("/migration/precopy/tcp/tls/psk/match",
- test_precopy_tcp_tls_psk_match);
- qtest_add_func("/migration/precopy/tcp/tls/psk/mismatch",
- test_precopy_tcp_tls_psk_mismatch);
+ migration_test_add("/migration/precopy/tcp/tls/psk/match",
+ test_precopy_tcp_tls_psk_match);
+ migration_test_add("/migration/precopy/tcp/tls/psk/mismatch",
+ test_precopy_tcp_tls_psk_mismatch);
#ifdef CONFIG_TASN1
- qtest_add_func("/migration/precopy/tcp/tls/x509/default-host",
- test_precopy_tcp_tls_x509_default_host);
- qtest_add_func("/migration/precopy/tcp/tls/x509/override-host",
- test_precopy_tcp_tls_x509_override_host);
- qtest_add_func("/migration/precopy/tcp/tls/x509/mismatch-host",
- test_precopy_tcp_tls_x509_mismatch_host);
- qtest_add_func("/migration/precopy/tcp/tls/x509/friendly-client",
- test_precopy_tcp_tls_x509_friendly_client);
- qtest_add_func("/migration/precopy/tcp/tls/x509/hostile-client",
- test_precopy_tcp_tls_x509_hostile_client);
- qtest_add_func("/migration/precopy/tcp/tls/x509/allow-anon-client",
- test_precopy_tcp_tls_x509_allow_anon_client);
- qtest_add_func("/migration/precopy/tcp/tls/x509/reject-anon-client",
- test_precopy_tcp_tls_x509_reject_anon_client);
+ migration_test_add("/migration/precopy/tcp/tls/x509/default-host",
+ test_precopy_tcp_tls_x509_default_host);
+ migration_test_add("/migration/precopy/tcp/tls/x509/override-host",
+ test_precopy_tcp_tls_x509_override_host);
+ migration_test_add("/migration/precopy/tcp/tls/x509/mismatch-host",
+ test_precopy_tcp_tls_x509_mismatch_host);
+ migration_test_add("/migration/precopy/tcp/tls/x509/friendly-client",
+ test_precopy_tcp_tls_x509_friendly_client);
+ migration_test_add("/migration/precopy/tcp/tls/x509/hostile-client",
+ test_precopy_tcp_tls_x509_hostile_client);
+ migration_test_add("/migration/precopy/tcp/tls/x509/allow-anon-client",
+ test_precopy_tcp_tls_x509_allow_anon_client);
+ migration_test_add("/migration/precopy/tcp/tls/x509/reject-anon-client",
+ test_precopy_tcp_tls_x509_reject_anon_client);
#endif /* CONFIG_TASN1 */
#endif /* CONFIG_GNUTLS */
- /* qtest_add_func("/migration/ignore_shared", test_ignore_shared); */
+ /* migration_test_add("/migration/ignore_shared", test_ignore_shared); */
#ifndef _WIN32
- qtest_add_func("/migration/fd_proto", test_migrate_fd_proto);
+ migration_test_add("/migration/fd_proto", test_migrate_fd_proto);
#endif
- qtest_add_func("/migration/validate_uuid", test_validate_uuid);
- qtest_add_func("/migration/validate_uuid_error", test_validate_uuid_error);
- qtest_add_func("/migration/validate_uuid_src_not_set",
- test_validate_uuid_src_not_set);
- qtest_add_func("/migration/validate_uuid_dst_not_set",
- test_validate_uuid_dst_not_set);
+ migration_test_add("/migration/validate_uuid", test_validate_uuid);
+ migration_test_add("/migration/validate_uuid_error",
+ test_validate_uuid_error);
+ migration_test_add("/migration/validate_uuid_src_not_set",
+ test_validate_uuid_src_not_set);
+ migration_test_add("/migration/validate_uuid_dst_not_set",
+ test_validate_uuid_dst_not_set);
/*
* See explanation why this test is slow on function definition
*/
if (g_test_slow()) {
- qtest_add_func("/migration/auto_converge", test_migrate_auto_converge);
+ migration_test_add("/migration/auto_converge",
+ test_migrate_auto_converge);
if (g_str_equal(arch, "x86_64") &&
has_kvm && kvm_dirty_ring_supported()) {
- qtest_add_func("/migration/dirty_limit", test_migrate_dirty_limit);
+ migration_test_add("/migration/dirty_limit",
+ test_migrate_dirty_limit);
}
}
- qtest_add_func("/migration/multifd/tcp/plain/none",
- test_multifd_tcp_none);
+ migration_test_add("/migration/multifd/tcp/plain/none",
+ test_multifd_tcp_none);
/*
* This test is flaky and sometimes fails in CI and otherwise:
* don't run unless user opts in via environment variable.
*/
if (getenv("QEMU_TEST_FLAKY_TESTS")) {
- qtest_add_func("/migration/multifd/tcp/plain/cancel",
- test_multifd_tcp_cancel);
+ migration_test_add("/migration/multifd/tcp/plain/cancel",
+ test_multifd_tcp_cancel);
}
- qtest_add_func("/migration/multifd/tcp/plain/zlib",
- test_multifd_tcp_zlib);
+ migration_test_add("/migration/multifd/tcp/plain/zlib",
+ test_multifd_tcp_zlib);
#ifdef CONFIG_ZSTD
- qtest_add_func("/migration/multifd/tcp/plain/zstd",
- test_multifd_tcp_zstd);
+ migration_test_add("/migration/multifd/tcp/plain/zstd",
+ test_multifd_tcp_zstd);
#endif
#ifdef CONFIG_GNUTLS
- qtest_add_func("/migration/multifd/tcp/tls/psk/match",
- test_multifd_tcp_tls_psk_match);
- qtest_add_func("/migration/multifd/tcp/tls/psk/mismatch",
- test_multifd_tcp_tls_psk_mismatch);
+ migration_test_add("/migration/multifd/tcp/tls/psk/match",
+ test_multifd_tcp_tls_psk_match);
+ migration_test_add("/migration/multifd/tcp/tls/psk/mismatch",
+ test_multifd_tcp_tls_psk_mismatch);
#ifdef CONFIG_TASN1
- qtest_add_func("/migration/multifd/tcp/tls/x509/default-host",
- test_multifd_tcp_tls_x509_default_host);
- qtest_add_func("/migration/multifd/tcp/tls/x509/override-host",
- test_multifd_tcp_tls_x509_override_host);
- qtest_add_func("/migration/multifd/tcp/tls/x509/mismatch-host",
- test_multifd_tcp_tls_x509_mismatch_host);
- qtest_add_func("/migration/multifd/tcp/tls/x509/allow-anon-client",
- test_multifd_tcp_tls_x509_allow_anon_client);
- qtest_add_func("/migration/multifd/tcp/tls/x509/reject-anon-client",
- test_multifd_tcp_tls_x509_reject_anon_client);
+ migration_test_add("/migration/multifd/tcp/tls/x509/default-host",
+ test_multifd_tcp_tls_x509_default_host);
+ migration_test_add("/migration/multifd/tcp/tls/x509/override-host",
+ test_multifd_tcp_tls_x509_override_host);
+ migration_test_add("/migration/multifd/tcp/tls/x509/mismatch-host",
+ test_multifd_tcp_tls_x509_mismatch_host);
+ migration_test_add("/migration/multifd/tcp/tls/x509/allow-anon-client",
+ test_multifd_tcp_tls_x509_allow_anon_client);
+ migration_test_add("/migration/multifd/tcp/tls/x509/reject-anon-client",
+ test_multifd_tcp_tls_x509_reject_anon_client);
#endif /* CONFIG_TASN1 */
#endif /* CONFIG_GNUTLS */
if (g_str_equal(arch, "x86_64") && has_kvm && kvm_dirty_ring_supported()) {
- qtest_add_func("/migration/dirty_ring",
- test_precopy_unix_dirty_ring);
- qtest_add_func("/migration/vcpu_dirty_limit",
- test_vcpu_dirty_limit);
+ migration_test_add("/migration/dirty_ring",
+ test_precopy_unix_dirty_ring);
+ migration_test_add("/migration/vcpu_dirty_limit",
+ test_vcpu_dirty_limit);
}
ret = g_test_run();
--
2.35.3
^ permalink raw reply related [flat|nested] 9+ messages in thread