qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] migration: fix analyze-migration.py script


From: Alexander Graf
Subject: Re: [Qemu-devel] [PATCH] migration: fix analyze-migration.py script
Date: Sun, 6 Sep 2015 10:36:30 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:38.0) Gecko/20100101 Thunderbird/38.2.0


On 05.09.15 21:51, Mark Cave-Ayland wrote:
> Commit 61964 "Add configuration section" broke the analyze-migration.py script
> which terminates due to the unrecognised section. Fix the script by parsing
> the contents of the configuration section directly into a new
> ConfigurationSection object (although nothing is done with it yet).
> 
> Signed-off-by: Mark Cave-Ayland <address@hidden>
> ---
>  scripts/analyze-migration.py |   13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/scripts/analyze-migration.py b/scripts/analyze-migration.py
> index f6894be..1455387 100755
> --- a/scripts/analyze-migration.py
> +++ b/scripts/analyze-migration.py
> @@ -252,6 +252,15 @@ class HTABSection(object):
>      def getDict(self):
>          return ""
>  
> +
> +class ConfigurationSection(object):
> +    def __init__(self, file):
> +        self.file = file
> +
> +    def read(self):
> +        name_len = self.file.read32()
> +        name = self.file.readstr(len = name_len)
> +
>  class VMSDFieldGeneric(object):
>      def __init__(self, desc, file):
>          self.file = file
> @@ -474,6 +483,7 @@ class MigrationDump(object):
>      QEMU_VM_SECTION_FULL  = 0x04
>      QEMU_VM_SUBSECTION    = 0x05
>      QEMU_VM_VMDESCRIPTION = 0x06
> +    QEMU_VM_CONFIGURATION = 0x07
>      QEMU_VM_SECTION_FOOTER= 0x7e
>  
>      def __init__(self, filename):
> @@ -514,6 +524,9 @@ class MigrationDump(object):
>              section_type = file.read8()
>              if section_type == self.QEMU_VM_EOF:
>                  break
> +            elif section_type == self.QEMU_VM_CONFIGURATION:
> +                section = ConfigurationSection(file)
> +                section.read()

So since we don't have a normal section header, there is no version
field either. That in turn means that the format is determined by the
machine version only - bleks.

So if there ever has to be more in the configuration section than the
machine name, please move to a more detectable scheme. Ideally something
that contains

  * version
  * length of dynamically sized fields
  * lenght of full blob

would be ideal, so that we have a chance to at least put code into the
analyze script to examine it.

For now, I think the hard coded solution in the analyze script is
reasonable.

However, I think we should print out the name if we find it. It should
be as simple as adding a special case for the configuration section in
MigrationDump.getDict().


Thanks a lot for the patch :),

Alex

>              elif section_type == self.QEMU_VM_SECTION_START or section_type 
> == self.QEMU_VM_SECTION_FULL:
>                  section_id = file.read32()
>                  name = file.readstr()
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]