aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuan Quintela <quintela@redhat.com>2023-04-11 17:33:56 +0200
committerJuan Quintela <quintela@redhat.com>2023-04-24 11:28:57 +0200
commit4291823694fd8507831d26e2558d9cd0030841f7 (patch)
treed6f76ddf450813c0445883451401c4febb7c47f6
parentcf671116facf4e29d91fce9c9ffb535385ffac81 (diff)
downloadqemu-4291823694fd8507831d26e2558d9cd0030841f7.zip
qemu-4291823694fd8507831d26e2558d9cd0030841f7.tar.gz
qemu-4291823694fd8507831d26e2558d9cd0030841f7.tar.bz2
migration: Make dirty_sync_missed_zero_copy atomic
Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Peter Xu <peterx@redhat.com>
-rw-r--r--migration/migration.c2
-rw-r--r--migration/multifd.c2
-rw-r--r--migration/ram.c5
-rw-r--r--migration/ram.h4
4 files changed, 3 insertions, 10 deletions
diff --git a/migration/migration.c b/migration/migration.c
index c3debe7..66e5197 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -1150,7 +1150,7 @@ static void populate_ram_info(MigrationInfo *info, MigrationState *s)
info->ram->mbps = s->mbps;
info->ram->dirty_sync_count = ram_counters.dirty_sync_count;
info->ram->dirty_sync_missed_zero_copy =
- ram_counters.dirty_sync_missed_zero_copy;
+ stat64_get(&ram_counters.dirty_sync_missed_zero_copy);
info->ram->postcopy_requests = ram_counters.postcopy_requests;
info->ram->page_size = page_size;
info->ram->multifd_bytes = stat64_get(&ram_counters.multifd_bytes);
diff --git a/migration/multifd.c b/migration/multifd.c
index 1c992ab..903df21 100644
--- a/migration/multifd.c
+++ b/migration/multifd.c
@@ -576,7 +576,7 @@ static int multifd_zero_copy_flush(QIOChannel *c)
return -1;
}
if (ret == 1) {
- dirty_sync_missed_zero_copy();
+ stat64_add(&ram_counters.dirty_sync_missed_zero_copy, 1);
}
return ret;
diff --git a/migration/ram.c b/migration/ram.c
index 71320ed..93e0a48 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -472,11 +472,6 @@ void ram_transferred_add(uint64_t bytes)
stat64_add(&ram_counters.transferred, bytes);
}
-void dirty_sync_missed_zero_copy(void)
-{
- ram_counters.dirty_sync_missed_zero_copy++;
-}
-
struct MigrationOps {
int (*ram_save_target_page)(RAMState *rs, PageSearchStatus *pss);
};
diff --git a/migration/ram.h b/migration/ram.h
index ed70391..2170c55 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -43,7 +43,7 @@
typedef struct {
int64_t dirty_pages_rate;
int64_t dirty_sync_count;
- uint64_t dirty_sync_missed_zero_copy;
+ Stat64 dirty_sync_missed_zero_copy;
uint64_t downtime_bytes;
Stat64 duplicate;
Stat64 multifd_bytes;
@@ -114,6 +114,4 @@ void ram_write_tracking_prepare(void);
int ram_write_tracking_start(void);
void ram_write_tracking_stop(void);
-void dirty_sync_missed_zero_copy(void);
-
#endif