[PATCH] migration: only check page size match if RAM postcopy is enabled

Stefan Reiter posted 1 patch 3 years, 3 months ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20210204163522.13291-1-s.reiter@proxmox.com
Maintainers: Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
migration/ram.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] migration: only check page size match if RAM postcopy is enabled
Posted by Stefan Reiter 3 years, 3 months ago
Postcopy may also be advised for dirty-bitmap migration only, in which
case the remote page size will not be available and we'll instead read
bogus data, blocking migration with a mismatch error if the VM uses
hugepages.

Fixes: 58110f0acb ("migration: split common postcopy out of ram postcopy")
Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>
---
 migration/ram.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/migration/ram.c b/migration/ram.c
index 7811cde643..6ace15261c 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -3521,7 +3521,7 @@ static int ram_load_precopy(QEMUFile *f)
                         }
                     }
                     /* For postcopy we need to check hugepage sizes match */
-                    if (postcopy_advised &&
+                    if (postcopy_advised && migrate_postcopy_ram() &&
                         block->page_size != qemu_host_page_size) {
                         uint64_t remote_page_size = qemu_get_be64(f);
                         if (remote_page_size != block->page_size) {
-- 
2.20.1



Re: [PATCH] migration: only check page size match if RAM postcopy is enabled
Posted by Dr. David Alan Gilbert 3 years, 3 months ago
* Stefan Reiter (s.reiter@proxmox.com) wrote:
> Postcopy may also be advised for dirty-bitmap migration only, in which
> case the remote page size will not be available and we'll instead read
> bogus data, blocking migration with a mismatch error if the VM uses
> hugepages.
> 
> Fixes: 58110f0acb ("migration: split common postcopy out of ram postcopy")
> Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>

Ah! That would explain a report on qemu-discuss a few days ago; yes this
makes sense.
(However you've literally just missed a migration pull; next time!)


Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/ram.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index 7811cde643..6ace15261c 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -3521,7 +3521,7 @@ static int ram_load_precopy(QEMUFile *f)
>                          }
>                      }
>                      /* For postcopy we need to check hugepage sizes match */
> -                    if (postcopy_advised &&
> +                    if (postcopy_advised && migrate_postcopy_ram() &&
>                          block->page_size != qemu_host_page_size) {
>                          uint64_t remote_page_size = qemu_get_be64(f);
>                          if (remote_page_size != block->page_size) {
> -- 
> 2.20.1
> 
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK


Re: [PATCH] migration: only check page size match if RAM postcopy is enabled
Posted by Dr. David Alan Gilbert 3 years, 2 months ago
* Stefan Reiter (s.reiter@proxmox.com) wrote:
> Postcopy may also be advised for dirty-bitmap migration only, in which
> case the remote page size will not be available and we'll instead read
> bogus data, blocking migration with a mismatch error if the VM uses
> hugepages.
> 
> Fixes: 58110f0acb ("migration: split common postcopy out of ram postcopy")
> Signed-off-by: Stefan Reiter <s.reiter@proxmox.com>

Queued

> ---
>  migration/ram.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index 7811cde643..6ace15261c 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -3521,7 +3521,7 @@ static int ram_load_precopy(QEMUFile *f)
>                          }
>                      }
>                      /* For postcopy we need to check hugepage sizes match */
> -                    if (postcopy_advised &&
> +                    if (postcopy_advised && migrate_postcopy_ram() &&
>                          block->page_size != qemu_host_page_size) {
>                          uint64_t remote_page_size = qemu_get_be64(f);
>                          if (remote_page_size != block->page_size) {
> -- 
> 2.20.1
> 
> 
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK