mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
migration: provide ram_state_init()
The old ram_state_init() is not really initializing the RAMState only, but including lots of other stuff that is RAM-related. Renaming it to ram_init_all(). Instead, provide a real ram_state_init(). Signed-off-by: Peter Xu <peterx@redhat.com> Reviewed-by: Juan Quintela <quintela@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
0331c8cabf
commit
7d00ee6ad6
1 changed files with 26 additions and 10 deletions
|
@ -2019,13 +2019,36 @@ err:
|
|||
|
||||
static int ram_state_init(RAMState **rsp)
|
||||
{
|
||||
*rsp = g_new0(RAMState, 1);
|
||||
Error *local_err = NULL;
|
||||
*rsp = g_try_new0(RAMState, 1);
|
||||
|
||||
if (!*rsp) {
|
||||
error_report("%s: Init ramstate fail", __func__);
|
||||
return -1;
|
||||
}
|
||||
|
||||
qemu_mutex_init(&(*rsp)->bitmap_mutex);
|
||||
qemu_mutex_init(&(*rsp)->src_page_req_mutex);
|
||||
QSIMPLEQ_INIT(&(*rsp)->src_page_requests);
|
||||
|
||||
/*
|
||||
* Count the total number of pages used by ram blocks not including any
|
||||
* gaps due to alignment or unplugs.
|
||||
*/
|
||||
(*rsp)->migration_dirty_pages = ram_bytes_total() >> TARGET_PAGE_BITS;
|
||||
|
||||
ram_state_reset(*rsp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ram_init_all(RAMState **rsp)
|
||||
{
|
||||
Error *local_err = NULL;
|
||||
|
||||
if (ram_state_init(rsp)) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (migrate_use_xbzrle()) {
|
||||
XBZRLE_cache_lock();
|
||||
XBZRLE.zero_target_page = g_malloc0(TARGET_PAGE_SIZE);
|
||||
|
@ -2065,7 +2088,6 @@ static int ram_state_init(RAMState **rsp)
|
|||
|
||||
qemu_mutex_lock_ramlist();
|
||||
rcu_read_lock();
|
||||
ram_state_reset(*rsp);
|
||||
|
||||
/* Skip setting bitmap if there is no RAM */
|
||||
if (ram_bytes_total()) {
|
||||
|
@ -2083,12 +2105,6 @@ static int ram_state_init(RAMState **rsp)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Count the total number of pages used by ram blocks not including any
|
||||
* gaps due to alignment or unplugs.
|
||||
*/
|
||||
(*rsp)->migration_dirty_pages = ram_bytes_total() >> TARGET_PAGE_BITS;
|
||||
|
||||
memory_global_dirty_log_start();
|
||||
migration_bitmap_sync(*rsp);
|
||||
qemu_mutex_unlock_ramlist();
|
||||
|
@ -2120,7 +2136,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
|
|||
|
||||
/* migration has already setup the bitmap, reuse it. */
|
||||
if (!migration_in_colo_state()) {
|
||||
if (ram_state_init(rsp) != 0) {
|
||||
if (ram_init_all(rsp) != 0) {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue