[PATCH] analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH

marcandre.lureau@redhat.com posted 1 patch 7 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230926081819.433631-1-marcandre.lureau@redhat.com
Maintainers: John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>
scripts/analyze-migration.py | 4 ++++
1 file changed, 4 insertions(+)
[PATCH] analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH
Posted by marcandre.lureau@redhat.com 7 months, 1 week ago
From: Marc-André Lureau <marcandre.lureau@redhat.com>

Traceback (most recent call last):
  File "scripts/analyze-migration.py", line 605, in <module>
    dump.read(dump_memory = args.memory)
  File "scripts/analyze-migration.py", line 542, in read
    section.read()
  File "scripts/analyze-migration.py", line 214, in read
    raise Exception("Unknown RAM flags: %x" % flags)
Exception: Unknown RAM flags: 200

See commit 77c259a4cb ("multifd: Create property multifd-flush-after-each-section")

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 scripts/analyze-migration.py | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
index b82a1b0c58..082424558b 100755
--- a/scripts/analyze-migration.py
+++ b/scripts/analyze-migration.py
@@ -111,6 +111,8 @@ class RamSection(object):
     RAM_SAVE_FLAG_CONTINUE = 0x20
     RAM_SAVE_FLAG_XBZRLE   = 0x40
     RAM_SAVE_FLAG_HOOK     = 0x80
+    RAM_SAVE_FLAG_COMPRESS_PAGE = 0x100
+    RAM_SAVE_FLAG_MULTIFD_FLUSH = 0x200
 
     def __init__(self, file, version_id, ramargs, section_key):
         if version_id != 4:
@@ -205,6 +207,8 @@ def read(self):
                 raise Exception("XBZRLE RAM compression is not supported yet")
             elif flags & self.RAM_SAVE_FLAG_HOOK:
                 raise Exception("RAM hooks don't make sense with files")
+            if flags & self.RAM_SAVE_FLAG_MULTIFD_FLUSH:
+                continue
 
             # End of RAM section
             if flags & self.RAM_SAVE_FLAG_EOS:
-- 
2.41.0


Re: [PATCH] analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH
Posted by Fabiano Rosas 7 months, 1 week ago
marcandre.lureau@redhat.com writes:

> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Traceback (most recent call last):
>   File "scripts/analyze-migration.py", line 605, in <module>
>     dump.read(dump_memory = args.memory)
>   File "scripts/analyze-migration.py", line 542, in read
>     section.read()
>   File "scripts/analyze-migration.py", line 214, in read
>     raise Exception("Unknown RAM flags: %x" % flags)
> Exception: Unknown RAM flags: 200
>
> See commit 77c259a4cb ("multifd: Create property multifd-flush-after-each-section")
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

Reviewed-by: Fabiano Rosas <farosas@suse.de>

This is the second time this FLUSH flag has caused issues. If I figure
out how to make meson copy the script to the build dir I could add a
test for this to migration-test.c.
Re: [PATCH] analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH
Posted by Marc-André Lureau 7 months, 1 week ago
On Tue, Sep 26, 2023 at 12:19 PM <marcandre.lureau@redhat.com> wrote:
>
> From: Marc-André Lureau <marcandre.lureau@redhat.com>
>
> Traceback (most recent call last):
>   File "scripts/analyze-migration.py", line 605, in <module>
>     dump.read(dump_memory = args.memory)
>   File "scripts/analyze-migration.py", line 542, in read
>     section.read()
>   File "scripts/analyze-migration.py", line 214, in read
>     raise Exception("Unknown RAM flags: %x" % flags)
> Exception: Unknown RAM flags: 200
>
> See commit 77c259a4cb ("multifd: Create property multifd-flush-after-each-section")
>
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>

cc Peter and Juan

> ---
>  scripts/analyze-migration.py | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
> index b82a1b0c58..082424558b 100755
> --- a/scripts/analyze-migration.py
> +++ b/scripts/analyze-migration.py
> @@ -111,6 +111,8 @@ class RamSection(object):
>      RAM_SAVE_FLAG_CONTINUE = 0x20
>      RAM_SAVE_FLAG_XBZRLE   = 0x40
>      RAM_SAVE_FLAG_HOOK     = 0x80
> +    RAM_SAVE_FLAG_COMPRESS_PAGE = 0x100
> +    RAM_SAVE_FLAG_MULTIFD_FLUSH = 0x200
>
>      def __init__(self, file, version_id, ramargs, section_key):
>          if version_id != 4:
> @@ -205,6 +207,8 @@ def read(self):
>                  raise Exception("XBZRLE RAM compression is not supported yet")
>              elif flags & self.RAM_SAVE_FLAG_HOOK:
>                  raise Exception("RAM hooks don't make sense with files")
> +            if flags & self.RAM_SAVE_FLAG_MULTIFD_FLUSH:
> +                continue
>
>              # End of RAM section
>              if flags & self.RAM_SAVE_FLAG_EOS:
> --
> 2.41.0
>
>


-- 
Marc-André Lureau
Re: [PATCH] analyze-migration: ignore RAM_SAVE_FLAG_MULTIFD_FLUSH
Posted by Peter Xu 7 months ago
On Wed, Sep 27, 2023 at 02:32:37PM +0400, Marc-André Lureau wrote:
> On Tue, Sep 26, 2023 at 12:19 PM <marcandre.lureau@redhat.com> wrote:
> >
> > From: Marc-André Lureau <marcandre.lureau@redhat.com>
> >
> > Traceback (most recent call last):
> >   File "scripts/analyze-migration.py", line 605, in <module>
> >     dump.read(dump_memory = args.memory)
> >   File "scripts/analyze-migration.py", line 542, in read
> >     section.read()
> >   File "scripts/analyze-migration.py", line 214, in read
> >     raise Exception("Unknown RAM flags: %x" % flags)
> > Exception: Unknown RAM flags: 200
> >
> > See commit 77c259a4cb ("multifd: Create property multifd-flush-after-each-section")
> >
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> 
> cc Peter and Juan

Sorry to be late..

It's actually a bug to have MULTIFD_FLUSH in the stream in the first place,
though..  the fix to make that MULTIFD_FLUSH disappear should be in Juan's
next pull.

IIUC logically analyze-migration.py shouldn't be able to understand
multifd, because it relies on a solo stream file, while multifd is already
against it.  We plan to add "file:" support for multifd, but even with that
I doubt whether there'll be MULTIFD_FLUSH kept in the final file because
it's only used to sync threads.

Thanks,

> 
> > ---
> >  scripts/analyze-migration.py | 4 ++++
> >  1 file changed, 4 insertions(+)
> >
> > diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
> > index b82a1b0c58..082424558b 100755
> > --- a/scripts/analyze-migration.py
> > +++ b/scripts/analyze-migration.py
> > @@ -111,6 +111,8 @@ class RamSection(object):
> >      RAM_SAVE_FLAG_CONTINUE = 0x20
> >      RAM_SAVE_FLAG_XBZRLE   = 0x40
> >      RAM_SAVE_FLAG_HOOK     = 0x80
> > +    RAM_SAVE_FLAG_COMPRESS_PAGE = 0x100
> > +    RAM_SAVE_FLAG_MULTIFD_FLUSH = 0x200
> >
> >      def __init__(self, file, version_id, ramargs, section_key):
> >          if version_id != 4:
> > @@ -205,6 +207,8 @@ def read(self):
> >                  raise Exception("XBZRLE RAM compression is not supported yet")
> >              elif flags & self.RAM_SAVE_FLAG_HOOK:
> >                  raise Exception("RAM hooks don't make sense with files")
> > +            if flags & self.RAM_SAVE_FLAG_MULTIFD_FLUSH:
> > +                continue
> >
> >              # End of RAM section
> >              if flags & self.RAM_SAVE_FLAG_EOS:
> > --
> > 2.41.0
> >
> >
> 
> 
> -- 
> Marc-André Lureau
> 

-- 
Peter Xu