Hi, guangrong
@@ -1051,11 +1052,13 @@ static int do_compress_ram_page(QEMUFile *f, z_stream
*stream, RAMBlock *block,
{
RAMState *rs = ram_state;
int bytes_sent, blen;
- uint8_t *p = block->host + (offset & TARGET_PAGE_MASK);
+ uint8_t buf[TARGET_PAGE_SIZE], *p;
+ p = block->host + (offset & TARGET_PAGE_MASK);
bytes_sent = save_page_header(rs, f, block, offset |
RAM_SAVE_FLAG_COMPRESS_PAGE);
- blen = qemu_put_compression_data(f, stream, p, TARGET_PAGE_SIZE);
+ memcpy(buf, p, TARGET_PAGE_SIZE);
+ blen = qemu_put_compression_data(f, stream, buf, TARGET_PAGE_SIZE);
Memory copy operation for every page to be compressed is not cheap, especially
when the page number is huge, and it may be not necessary for pages never
updated during migration.