qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH 5/6] save_block_hdr: we can recalculate the cont


From: Juan Quintela
Subject: Re: [Qemu-devel] [PATCH 5/6] save_block_hdr: we can recalculate the cont parameter here
Date: Thu, 12 Mar 2015 16:36:23 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

"Li, Liang Z" <address@hidden> wrote:
>> -----Original Message-----
>> From: Juan Quintela [mailto:address@hidden
>> Sent: Friday, February 13, 2015 6:03 AM
>> To: address@hidden
>> Cc: Li, Liang Z
>> Subject: [PATCH 5/6] save_block_hdr: we can recalculate the cont parameter
>> here
>> 
>> No need to pass it through all the callers.  Once there, update
>> last_sent_block here.
>> 
>> Signed-off-by: Juan Quintela <address@hidden>
>> ---
>>  arch_init.c | 47 ++++++++++++++++++++++++-----------------------
>>  1 file changed, 24 insertions(+), 23 deletions(-)
>> 
>> diff --git a/arch_init.c b/arch_init.c
>> index 834f40c..95a61e2 100644
>> --- a/arch_init.c
>> +++ b/arch_init.c
>> @@ -304,34 +304,39 @@ uint64_t xbzrle_mig_pages_overflow(void)
>>      return acct_info.xbzrle_overflows;
>>  }
>> 
>> +/* This is the last block that we have visited serching for dirty pages
>> +*/ static RAMBlock *last_seen_block;
>> +/* This is the last block from where we have sent data */ static
>> +RAMBlock *last_sent_block; static ram_addr_t last_offset; static
>> +unsigned long *migration_bitmap; static uint64_t migration_dirty_pages;
>> +static uint32_t last_version; static bool ram_bulk_stage;
>> +
>>  static size_t save_block_hdr(QEMUFile *f, RAMBlock *block, ram_addr_t
>> offset,
>> -                             int cont, int flag)
>> +                             int flag)
>>  {
>>      size_t size;
>> 
>> -    qemu_put_be64(f, offset | cont | flag);
>> +    if (block == last_sent_block) {
>> +        offset |= RAM_SAVE_FLAG_CONTINUE;
>> +    }
>> +
>> +    qemu_put_be64(f, offset | flag);
>>      size = 8;
>> 
>> -    if (!cont) {
>> +    if (block != last_sent_block) {
>>          qemu_put_byte(f, strlen(block->idstr));
>>          qemu_put_buffer(f, (uint8_t *)block->idstr,
>>                          strlen(block->idstr));
>>          size += 1 + strlen(block->idstr);
>> +        last_sent_block = block;
>>      }
>>      return size;
>>  }
>
> If save_block_hdr function is changed to this, then in my patch, it
> can't not be directly reused in
> compression thread. A lock is needed to access last_sent_block. I
> prefer the original implementation.

ah

ok, will redo this then.

Thanks for the feedback.

Later, Juan.



reply via email to

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