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
					
				
							
								
								
									
										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)
 | 
					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);
 | 
					        memset(host, ch, size);
 | 
				
			||||||
#ifndef _WIN32
 | 
					#ifndef _WIN32
 | 
				
			||||||
        if (ch == 0 &&
 | 
					        if (ch == 0 && (!kvm_enabled() || kvm_has_sync_mmu())) {
 | 
				
			||||||
            (!kvm_enabled() || kvm_has_sync_mmu()) &&
 | 
					            size = size & ~(getpagesize() - 1);
 | 
				
			||||||
            getpagesize() <= TARGET_PAGE_SIZE) {
 | 
					            if (size > 0) {
 | 
				
			||||||
            qemu_madvise(host, TARGET_PAGE_SIZE, QEMU_MADV_DONTNEED);
 | 
					                qemu_madvise(host, size, QEMU_MADV_DONTNEED);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user