qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v5 3/3] migration: add bitmap for received page


From: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH v5 3/3] migration: add bitmap for received page
Date: Tue, 27 Jun 2017 12:53:16 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux)

Peter Xu <address@hidden> wrote:
> On Tue, Jun 27, 2017 at 05:50:27AM -0400, Alexey Perevalov wrote:
>
> [...]
>
>> @@ -60,6 +62,14 @@ static inline void *ramblock_ptr(RAMBlock *block, 
>> ram_addr_t offset)
>>      return (char *)block->host + offset;
>>  }
>>  
>> +static inline unsigned long int ramblock_recv_bitmap_offset(void *host_addr,
>> +                                                            RAMBlock *rb)
>> +{
>> +    uint64_t host_addr_offset =
>> +            (uint64_t)(uintptr_t)(host_addr - (void *)rb->host);
>> +    return host_addr_offset >> TARGET_PAGE_BITS;
>> +}
>> +
>>  long qemu_getrampagesize(void);
>>  unsigned long last_ram_page(void);
>>  RAMBlock *qemu_ram_alloc_from_file(ram_addr_t size, MemoryRegion *mr,
>> diff --git a/migration/migration.c b/migration/migration.c
>> index 71e38bc..53fbd41 100644
>> --- a/migration/migration.c
>> +++ b/migration/migration.c
>> @@ -143,6 +143,7 @@ MigrationIncomingState 
>> *migration_incoming_get_current(void)
>>          qemu_mutex_init(&mis_current.rp_mutex);
>>          qemu_event_init(&mis_current.main_thread_load_event, false);
>>          once = true;
>> +        ramblock_recv_map_init();
>
> One tiny more comment: shall we init this at the beginning of incoming
> migration? Maybe into migration_fd_process_incoming(), before entering
> the coroutine?
>
> Then, for the destruction of it below...
>
> [...]
>
>> @@ -2324,8 +2352,14 @@ static int ram_load_setup(QEMUFile *f, void *opaque)
>>  
>>  static int ram_load_cleanup(void *opaque)
>>  {
>> +    RAMBlock *rb;
>>      xbzrle_load_cleanup();
>>      compress_threads_load_cleanup();
>> +
>> +    RAMBLOCK_FOREACH(rb) {
>> +        g_free(rb->receivedmap);
>> +        rb->receivedmap = NULL;
>> +    }
>
> ... maybe move to migration_incoming_state_destroy()?
>
> And, I didn't really find ram_load_cleanup() in my repo. Am I missing
> something?

On top of my load_setup patches.

>
> Other than above, this patch looks good to me.  Thanks,

Later, Juan.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]