From eeccb99c9d28484303f721e94c5084e9c29a3d03 Mon Sep 17 00:00:00 2001 From: Andrey Gruzdev Date: Thu, 1 Apr 2021 12:22:25 +0300 Subject: migration: Pre-fault memory before starting background snasphot This commit solves the issue with userfault_fd WP feature that background snapshot is based on. For any never poluated or discarded memory page, the UFFDIO_WRITEPROTECT ioctl() would skip updating PTE for that page, thereby loosing WP setting for it. So we need to pre-fault pages for each RAM block to be protected before making a userfault_fd wr-protect ioctl(). Fixes: 278e2f551a095b234de74dca9c214d5502a1f72c (migration: support UFFD write fault processing in ram_save_iterate()) Signed-off-by: Andrey Gruzdev Reported-by: David Hildenbrand Reviewed-by: David Hildenbrand Message-Id: <20210401092226.102804-4-andrey.gruzdev@virtuozzo.com> Signed-off-by: Dr. David Alan Gilbert dgilbert: Bodged ifdef __linux__ on ram_write_tracking_prepare, should really go in a stub --- migration/ram.h | 1 + 1 file changed, 1 insertion(+) (limited to 'migration/ram.h') diff --git a/migration/ram.h b/migration/ram.h index 6378bb3..4833e9f 100644 --- a/migration/ram.h +++ b/migration/ram.h @@ -82,6 +82,7 @@ void colo_incoming_start_dirty_log(void); /* Background snapshot */ bool ram_write_tracking_available(void); bool ram_write_tracking_compatible(void); +void ram_write_tracking_prepare(void); int ram_write_tracking_start(void); void ram_write_tracking_stop(void); -- cgit v1.1