diff options
author | Peter Xu <peterx@redhat.com> | 2016-02-18 13:16:52 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-02-22 18:40:28 +0100 |
commit | 1fbeff72c2ba17aedfbf0d57caf8945862725c54 (patch) | |
tree | 6aa7d1fa5934f249cdfa21089019bff5e7969b2d /memory_mapping.c | |
parent | 63e27f28f281986de791f099efa4fa15cc47f4fc (diff) |
dump-guest-memory: add "detach" support
If "detach" is provided, one thread is created to do the dump work,
while main thread will return immediately. For each GuestPhysBlock,
adding one more field "mr" to points to MemoryRegion that it
belongs, also ref the mr before use.
Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Fam Zheng <famz@redhat.com>
Message-Id: <1455772616-8668-8-git-send-email-peterx@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'memory_mapping.c')
-rw-r--r-- | memory_mapping.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/memory_mapping.c b/memory_mapping.c index 04db3ac7fa..c8855de92b 100644 --- a/memory_mapping.c +++ b/memory_mapping.c @@ -178,6 +178,7 @@ void guest_phys_blocks_free(GuestPhysBlockList *list) QTAILQ_FOREACH_SAFE(p, &list->head, next, q) { QTAILQ_REMOVE(&list->head, p, next); + memory_region_unref(p->mr); g_free(p); } list->num = 0; @@ -241,6 +242,8 @@ static void guest_phys_blocks_region_add(MemoryListener *listener, block->target_start = target_start; block->target_end = target_end; block->host_addr = host_addr; + block->mr = section->mr; + memory_region_ref(section->mr); QTAILQ_INSERT_TAIL(&g->list->head, block, next); ++g->list->num; |