On 09/25/2015 05:31 PM, Denis V. Lunev wrote: > On 09/25/2015 12:24 PM, Wen Congyang wrote: >> On 09/25/2015 05:09 PM, Denis V. Lunev wrote: >>> we can omit calling of bitmap_set in migration_bitmap_extend and >>> ram_save_setup just after bitmap_new, which properly zeroes memory >>> inside. >> This patch is wrong. bitmap_set() is set all bits of the memory to 1, >> not 0. >> > > OK, then I'll replace g_try_malloc0 with g_try_malloc in the next patch to > avoid > double memset
No, bitmap_new() is called in many places. Some caller needs zero memory, and some caller doesn't need... > >>> Signed-off-by: Denis V. Lunev <d...@openvz.org> >>> CC: Igor Redko <red...@virtuozzo.com> >>> CC: Anna Melekhova <an...@virtuozzo.com> >>> CC: Juan Quintela <quint...@redhat.com> >>> CC: Amit Shah <amit.s...@redhat.com> >>> CC: Wen Congyang <we...@cn.fujitsu.com> >>> --- >>> migration/ram.c | 2 -- >>> 1 file changed, 2 deletions(-) >>> >>> diff --git a/migration/ram.c b/migration/ram.c >>> index 7f007e6..a712c68 100644 >>> --- a/migration/ram.c >>> +++ b/migration/ram.c >>> @@ -1081,7 +1081,6 @@ void migration_bitmap_extend(ram_addr_t old, >>> ram_addr_t new) >>> */ >>> qemu_mutex_lock(&migration_bitmap_mutex); >>> bitmap_copy(bitmap, old_bitmap, old); >>> - bitmap_set(bitmap, old, new - old); >>> atomic_rcu_set(&migration_bitmap, bitmap); >>> qemu_mutex_unlock(&migration_bitmap_mutex); >>> migration_dirty_pages += new - old; >>> @@ -1146,7 +1145,6 @@ static int ram_save_setup(QEMUFile *f, void *opaque) >>> ram_bitmap_pages = last_ram_offset() >> TARGET_PAGE_BITS; >>> migration_bitmap = bitmap_new(ram_bitmap_pages); >>> - bitmap_set(migration_bitmap, 0, ram_bitmap_pages); >>> /* >>> * Count the total number of pages used by ram blocks not including >>> any >>> > > . >