mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
migration: ram_handle_compressed
ram_handle_compressed() should be aware of size > TARGET_PAGE_SIZE. migration-rdma can call it with larger size. Signed-off-by: Isaku Yamahata <yamahata@private.email.ne.jp> Signed-off-by: Juan Quintela <quintela@redhat.com>
This commit is contained in:
parent
dc3c26a479
commit
d613a56f84
1 changed files with 6 additions and 5 deletions
11
arch_init.c
11
arch_init.c
|
@ -848,13 +848,14 @@ static inline void *host_from_stream_offset(QEMUFile *f,
|
|||
*/
|
||||
void ram_handle_compressed(void *host, uint8_t ch, uint64_t size)
|
||||
{
|
||||
if (ch != 0 || !is_zero_range(host, TARGET_PAGE_SIZE)) {
|
||||
if (ch != 0 || !is_zero_range(host, size)) {
|
||||
memset(host, ch, size);
|
||||
#ifndef _WIN32
|
||||
if (ch == 0 &&
|
||||
(!kvm_enabled() || kvm_has_sync_mmu()) &&
|
||||
getpagesize() <= TARGET_PAGE_SIZE) {
|
||||
qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
|
||||
if (ch == 0 && (!kvm_enabled() || kvm_has_sync_mmu())) {
|
||||
size = size & ~(getpagesize() - 1);
|
||||
if (size > 0) {
|
||||
qemu_madvise(host, size, QEMU_MADV_DONTNEED);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue