[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.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] [PATCH 5/6] save_block_hdr: we can recalculate the cont parameter here,
Juan Quintela <=