[Qemu-devel] [PATCH v3 4/7] qmp: enable query-[chardev|version|name|uuid|iothreads|memdev] commands in preconfig state

Dr. David Alan Gilbert (git) posted 7 patches 7 years, 8 months ago
There is a newer version of this series
[Qemu-devel] [PATCH v3 4/7] qmp: enable query-[chardev|version|name|uuid|iothreads|memdev] commands in preconfig state
Posted by Dr. David Alan Gilbert (git) 7 years, 8 months ago
From: Igor Mammedov <imammedo@redhat.com>

subj commands, are informational and do not depend on machine being
initialized. Make them available early in preconfig runstate to make
the later a little bit more useful.

Signed-off-by: Igor Mammedov <imammedo@redhat.com>
---
 qapi/char.json |  3 ++-
 qapi/misc.json | 12 +++++++-----
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/qapi/char.json b/qapi/char.json
index ae19dcd1ed..60f31d83fc 100644
--- a/qapi/char.json
+++ b/qapi/char.json
@@ -62,7 +62,8 @@
 #    }
 #
 ##
-{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
+{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
+  'allow-preconfig': true }
 
 ##
 # @ChardevBackendInfo:
diff --git a/qapi/misc.json b/qapi/misc.json
index f83a63a0ab..1be1728c0e 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -117,7 +117,8 @@
 #    }
 #
 ##
-{ 'command': 'query-version', 'returns': 'VersionInfo' }
+{ 'command': 'query-version', 'returns': 'VersionInfo',
+  'allow-preconfig': true }
 
 ##
 # @CommandInfo:
@@ -241,7 +242,7 @@
 # <- { "return": { "name": "qemu-name" } }
 #
 ##
-{ 'command': 'query-name', 'returns': 'NameInfo' }
+{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
 
 ##
 # @KvmInfo:
@@ -301,7 +302,7 @@
 # <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
 #
 ##
-{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
+{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
 
 ##
 # @EventInfo:
@@ -710,7 +711,8 @@
 #    }
 #
 ##
-{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
+{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
+  'allow-preconfig': true }
 
 ##
 # @BalloonInfo:
@@ -2902,7 +2904,7 @@
 #    }
 #
 ##
-{ 'command': 'query-memdev', 'returns': ['Memdev'] }
+{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
 
 ##
 # @PCDIMMDeviceInfo:
-- 
2.17.0


Re: [Qemu-devel] [PATCH v3 4/7] qmp: enable query-[chardev|version|name|uuid|iothreads|memdev] commands in preconfig state
Posted by Markus Armbruster 7 years, 8 months ago
"Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:

> From: Igor Mammedov <imammedo@redhat.com>
>
> subj commands, are informational and do not depend on machine being
> initialized. Make them available early in preconfig runstate to make
> the later a little bit more useful.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

Excessively long subject line.  Suggested fix:

    qmp: Enable a few query- commands in preconfig state

    Commands query-chardev, query-version, query-name, query-uuid,
    query-iothreads, query-memdev are informational and do not depend on
    the machine being initialized.  Make them available in preconfig
    runstate to make the latter a little bit more useful.

> ---
>  qapi/char.json |  3 ++-
>  qapi/misc.json | 12 +++++++-----
>  2 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/qapi/char.json b/qapi/char.json
> index ae19dcd1ed..60f31d83fc 100644
> --- a/qapi/char.json
> +++ b/qapi/char.json
> @@ -62,7 +62,8 @@
>  #    }
>  #
>  ##
> -{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
> +{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
> +  'allow-preconfig': true }

Okay because

    if (qemu_opts_foreach(qemu_find_opts("chardev"),
                          chardev_init_func, NULL, NULL)) {
        exit(1);
    }

runs before -preconfig's main_loop().

>  
>  ##
>  # @ChardevBackendInfo:
> diff --git a/qapi/misc.json b/qapi/misc.json
> index f83a63a0ab..1be1728c0e 100644
> --- a/qapi/misc.json
> +++ b/qapi/misc.json
> @@ -117,7 +117,8 @@
>  #    }
>  #
>  ##
> -{ 'command': 'query-version', 'returns': 'VersionInfo' }
> +{ 'command': 'query-version', 'returns': 'VersionInfo',
> +  'allow-preconfig': true }

Returns data fixed at compile time.  Okay.

>  
>  ##
>  # @CommandInfo:
> @@ -241,7 +242,7 @@
>  # <- { "return": { "name": "qemu-name" } }
>  #
>  ##
> -{ 'command': 'query-name', 'returns': 'NameInfo' }
> +{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }

Okay because parse_name() runs before -preconfig's main_loop().

>  ##
>  # @KvmInfo:
> @@ -301,7 +302,7 @@
>  # <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
>  #
>  ##
> -{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
> +{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }

Okay because qemu_uuid(optarg, &qemu_uuid) runs before -preconfig's
main_loop().

>  
>  ##
>  # @EventInfo:
> @@ -710,7 +711,8 @@
>  #    }
>  #
>  ##
> -{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
> +{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
> +  'allow-preconfig': true }

Feeling lazy... why is this one okay?

>  
>  ##
>  # @BalloonInfo:
> @@ -2902,7 +2904,7 @@
>  #    }
>  #
>  ##
> -{ 'command': 'query-memdev', 'returns': ['Memdev'] }
> +{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
>  
>  ##
>  # @PCDIMMDeviceInfo:

And this one?

Re: [Qemu-devel] [PATCH v3 4/7] qmp: enable query-[chardev|version|name|uuid|iothreads|memdev] commands in preconfig state
Posted by Dr. David Alan Gilbert 7 years, 8 months ago
* Markus Armbruster (armbru@redhat.com) wrote:
> "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:
> 
> > From: Igor Mammedov <imammedo@redhat.com>
> >
> > subj commands, are informational and do not depend on machine being
> > initialized. Make them available early in preconfig runstate to make
> > the later a little bit more useful.
> >
> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> 
> Excessively long subject line.  Suggested fix:
> 
>     qmp: Enable a few query- commands in preconfig state
> 
>     Commands query-chardev, query-version, query-name, query-uuid,
>     query-iothreads, query-memdev are informational and do not depend on
>     the machine being initialized.  Make them available in preconfig
>     runstate to make the latter a little bit more useful.
> 
> > ---
> >  qapi/char.json |  3 ++-
> >  qapi/misc.json | 12 +++++++-----
> >  2 files changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/qapi/char.json b/qapi/char.json
> > index ae19dcd1ed..60f31d83fc 100644
> > --- a/qapi/char.json
> > +++ b/qapi/char.json
> > @@ -62,7 +62,8 @@
> >  #    }
> >  #
> >  ##
> > -{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
> > +{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
> > +  'allow-preconfig': true }
> 
> Okay because
> 
>     if (qemu_opts_foreach(qemu_find_opts("chardev"),
>                           chardev_init_func, NULL, NULL)) {
>         exit(1);
>     }
> 
> runs before -preconfig's main_loop().
> 
> >  
> >  ##
> >  # @ChardevBackendInfo:
> > diff --git a/qapi/misc.json b/qapi/misc.json
> > index f83a63a0ab..1be1728c0e 100644
> > --- a/qapi/misc.json
> > +++ b/qapi/misc.json
> > @@ -117,7 +117,8 @@
> >  #    }
> >  #
> >  ##
> > -{ 'command': 'query-version', 'returns': 'VersionInfo' }
> > +{ 'command': 'query-version', 'returns': 'VersionInfo',
> > +  'allow-preconfig': true }
> 
> Returns data fixed at compile time.  Okay.
> 
> >  
> >  ##
> >  # @CommandInfo:
> > @@ -241,7 +242,7 @@
> >  # <- { "return": { "name": "qemu-name" } }
> >  #
> >  ##
> > -{ 'command': 'query-name', 'returns': 'NameInfo' }
> > +{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
> 
> Okay because parse_name() runs before -preconfig's main_loop().
> 
> >  ##
> >  # @KvmInfo:
> > @@ -301,7 +302,7 @@
> >  # <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
> >  #
> >  ##
> > -{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
> > +{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
> 
> Okay because qemu_uuid(optarg, &qemu_uuid) runs before -preconfig's
> main_loop().
> 
> >  
> >  ##
> >  # @EventInfo:
> > @@ -710,7 +711,8 @@
> >  #    }
> >  #
> >  ##
> > -{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
> > +{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
> > +  'allow-preconfig': true }
> 
> Feeling lazy... why is this one okay?

Because it's a walk of the entire object tree; with
object_get_objects_root() - assuming the object tree exists we're safe.

> >  
> >  ##
> >  # @BalloonInfo:
> > @@ -2902,7 +2904,7 @@
> >  #    }
> >  #
> >  ##
> > -{ 'command': 'query-memdev', 'returns': ['Memdev'] }
> > +{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
> >  
> >  ##
> >  # @PCDIMMDeviceInfo:
> 
> And this one?

Same trick as query-iothreads.

Dave

--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

Re: [Qemu-devel] [PATCH v3 4/7] qmp: enable query-[chardev|version|name|uuid|iothreads|memdev] commands in preconfig state
Posted by Markus Armbruster 7 years, 8 months ago
"Dr. David Alan Gilbert" <dgilbert@redhat.com> writes:

> * Markus Armbruster (armbru@redhat.com) wrote:
>> "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:
>> 
>> > From: Igor Mammedov <imammedo@redhat.com>
>> >
>> > subj commands, are informational and do not depend on machine being
>> > initialized. Make them available early in preconfig runstate to make
>> > the later a little bit more useful.
>> >
>> > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>> 
>> Excessively long subject line.  Suggested fix:
>> 
>>     qmp: Enable a few query- commands in preconfig state
>> 
>>     Commands query-chardev, query-version, query-name, query-uuid,
>>     query-iothreads, query-memdev are informational and do not depend on
>>     the machine being initialized.  Make them available in preconfig
>>     runstate to make the latter a little bit more useful.
>> 
>> > ---
>> >  qapi/char.json |  3 ++-
>> >  qapi/misc.json | 12 +++++++-----
>> >  2 files changed, 9 insertions(+), 6 deletions(-)
>> >
>> > diff --git a/qapi/char.json b/qapi/char.json
>> > index ae19dcd1ed..60f31d83fc 100644
>> > --- a/qapi/char.json
>> > +++ b/qapi/char.json
>> > @@ -62,7 +62,8 @@
>> >  #    }
>> >  #
>> >  ##
>> > -{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
>> > +{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
>> > +  'allow-preconfig': true }
>> 
>> Okay because
>> 
>>     if (qemu_opts_foreach(qemu_find_opts("chardev"),
>>                           chardev_init_func, NULL, NULL)) {
>>         exit(1);
>>     }
>> 
>> runs before -preconfig's main_loop().
>> 
>> >  
>> >  ##
>> >  # @ChardevBackendInfo:
>> > diff --git a/qapi/misc.json b/qapi/misc.json
>> > index f83a63a0ab..1be1728c0e 100644
>> > --- a/qapi/misc.json
>> > +++ b/qapi/misc.json
>> > @@ -117,7 +117,8 @@
>> >  #    }
>> >  #
>> >  ##
>> > -{ 'command': 'query-version', 'returns': 'VersionInfo' }
>> > +{ 'command': 'query-version', 'returns': 'VersionInfo',
>> > +  'allow-preconfig': true }
>> 
>> Returns data fixed at compile time.  Okay.
>> 
>> >  
>> >  ##
>> >  # @CommandInfo:
>> > @@ -241,7 +242,7 @@
>> >  # <- { "return": { "name": "qemu-name" } }
>> >  #
>> >  ##
>> > -{ 'command': 'query-name', 'returns': 'NameInfo' }
>> > +{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
>> 
>> Okay because parse_name() runs before -preconfig's main_loop().
>> 
>> >  ##
>> >  # @KvmInfo:
>> > @@ -301,7 +302,7 @@
>> >  # <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
>> >  #
>> >  ##
>> > -{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
>> > +{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
>> 
>> Okay because qemu_uuid(optarg, &qemu_uuid) runs before -preconfig's
>> main_loop().
>> 
>> >  
>> >  ##
>> >  # @EventInfo:
>> > @@ -710,7 +711,8 @@
>> >  #    }
>> >  #
>> >  ##
>> > -{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
>> > +{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
>> > +  'allow-preconfig': true }
>> 
>> Feeling lazy... why is this one okay?
>
> Because it's a walk of the entire object tree; with
> object_get_objects_root() - assuming the object tree exists we're safe.
>
>> >  
>> >  ##
>> >  # @BalloonInfo:
>> > @@ -2902,7 +2904,7 @@
>> >  #    }
>> >  #
>> >  ##
>> > -{ 'command': 'query-memdev', 'returns': ['Memdev'] }
>> > +{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig': true }
>> >  
>> >  ##
>> >  # @PCDIMMDeviceInfo:
>> 
>> And this one?
>
> Same trick as query-iothreads.

Thanks.