diff mbox series

[v1,1/1] util/async-teardown: wire up query-command-line-options

Message ID 20230320074855.11130-1-imbrenda@linux.ibm.com (mailing list archive)
State New, archived
Headers show
Series [v1,1/1] util/async-teardown: wire up query-command-line-options | expand

Commit Message

Claudio Imbrenda March 20, 2023, 7:48 a.m. UTC
The recently introduced -async-teardown commandline option was not
wired up properly and did not show up in the output of the QMP command
query-command-line-options. This means that libvirt will have no way to
discover whether the feature is supported.

This patch fixes the issue by correctly wiring up the commandline
option so that it appears in the output of query-command-line-options.

Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Fixes: c891c24b1a ("os-posix: asynchronous teardown for shutdown on Linux")
Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
---
 util/async-teardown.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

Comments

Thomas Huth March 20, 2023, 8:56 a.m. UTC | #1
On 20/03/2023 08.48, Claudio Imbrenda wrote:
> The recently introduced -async-teardown commandline option was not
> wired up properly and did not show up in the output of the QMP command
> query-command-line-options. This means that libvirt will have no way to
> discover whether the feature is supported.
> 
> This patch fixes the issue by correctly wiring up the commandline
> option so that it appears in the output of query-command-line-options.
> 
> Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
> Fixes: c891c24b1a ("os-posix: asynchronous teardown for shutdown on Linux")
> Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> ---
>   util/async-teardown.c | 18 ++++++++++++++++++
>   1 file changed, 18 insertions(+)
> 
> diff --git a/util/async-teardown.c b/util/async-teardown.c
> index 62cdeb0f20..9a2e7bc146 100644
> --- a/util/async-teardown.c
> +++ b/util/async-teardown.c
> @@ -12,6 +12,9 @@
>    */
>   
>   #include "qemu/osdep.h"
> +#include "qemu/config-file.h"
> +#include "qemu/option.h"
> +#include "qemu/module.h"
>   #include <dirent.h>
>   #include <sys/prctl.h>
>   #include <sched.h>
> @@ -144,3 +147,18 @@ void init_async_teardown(void)
>       clone(async_teardown_fn, new_stack_for_clone(), CLONE_VM, NULL);
>       sigprocmask(SIG_SETMASK, &old_signals, NULL);
>   }
> +
> +static QemuOptsList qemu_async_teardown_opts = {
> +    .name = "async-teardown",
> +    .implied_opt_name = "enable",

Are you sure about the "implied_opt_name" field? If I got that right, it's 
used for options where you can omit the part before the "=" in the first 
paramter, e.g.

  -netdev user

is the same as:

  -netdev type=user

... but as far as I can see, there is no way to use

  -async-teardown enable=off

at the command line?

  Thomas


> +    .head = QTAILQ_HEAD_INITIALIZER(qemu_async_teardown_opts.head),
> +    .desc = {
> +        { /* end of list */ }
> +    },
> +};
> +
> +static void register_async_teardown(void)
> +{
> +    qemu_add_opts(&qemu_async_teardown_opts);
> +}
> +opts_init(register_async_teardown);
Claudio Imbrenda March 20, 2023, 9:13 a.m. UTC | #2
On Mon, 20 Mar 2023 09:56:05 +0100
Thomas Huth <thuth@redhat.com> wrote:

> On 20/03/2023 08.48, Claudio Imbrenda wrote:
> > The recently introduced -async-teardown commandline option was not
> > wired up properly and did not show up in the output of the QMP command
> > query-command-line-options. This means that libvirt will have no way to
> > discover whether the feature is supported.
> > 
> > This patch fixes the issue by correctly wiring up the commandline
> > option so that it appears in the output of query-command-line-options.
> > 
> > Reported-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
> > Fixes: c891c24b1a ("os-posix: asynchronous teardown for shutdown on Linux")
> > Signed-off-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
> > ---
> >   util/async-teardown.c | 18 ++++++++++++++++++
> >   1 file changed, 18 insertions(+)
> > 
> > diff --git a/util/async-teardown.c b/util/async-teardown.c
> > index 62cdeb0f20..9a2e7bc146 100644
> > --- a/util/async-teardown.c
> > +++ b/util/async-teardown.c
> > @@ -12,6 +12,9 @@
> >    */
> >   
> >   #include "qemu/osdep.h"
> > +#include "qemu/config-file.h"
> > +#include "qemu/option.h"
> > +#include "qemu/module.h"
> >   #include <dirent.h>
> >   #include <sys/prctl.h>
> >   #include <sched.h>
> > @@ -144,3 +147,18 @@ void init_async_teardown(void)
> >       clone(async_teardown_fn, new_stack_for_clone(), CLONE_VM, NULL);
> >       sigprocmask(SIG_SETMASK, &old_signals, NULL);
> >   }
> > +
> > +static QemuOptsList qemu_async_teardown_opts = {
> > +    .name = "async-teardown",
> > +    .implied_opt_name = "enable",  
> 
> Are you sure about the "implied_opt_name" field? If I got that right, it's 

yeah that should not be there, I'll fix and send a v2

> used for options where you can omit the part before the "=" in the first 
> paramter, e.g.
> 
>   -netdev user
> 
> is the same as:
> 
>   -netdev type=user
> 
> ... but as far as I can see, there is no way to use
> 
>   -async-teardown enable=off
> 
> at the command line?
> 
>   Thomas
> 
> 
> > +    .head = QTAILQ_HEAD_INITIALIZER(qemu_async_teardown_opts.head),
> > +    .desc = {
> > +        { /* end of list */ }
> > +    },
> > +};
> > +
> > +static void register_async_teardown(void)
> > +{
> > +    qemu_add_opts(&qemu_async_teardown_opts);
> > +}
> > +opts_init(register_async_teardown);  
>
diff mbox series

Patch

diff --git a/util/async-teardown.c b/util/async-teardown.c
index 62cdeb0f20..9a2e7bc146 100644
--- a/util/async-teardown.c
+++ b/util/async-teardown.c
@@ -12,6 +12,9 @@ 
  */
 
 #include "qemu/osdep.h"
+#include "qemu/config-file.h"
+#include "qemu/option.h"
+#include "qemu/module.h"
 #include <dirent.h>
 #include <sys/prctl.h>
 #include <sched.h>
@@ -144,3 +147,18 @@  void init_async_teardown(void)
     clone(async_teardown_fn, new_stack_for_clone(), CLONE_VM, NULL);
     sigprocmask(SIG_SETMASK, &old_signals, NULL);
 }
+
+static QemuOptsList qemu_async_teardown_opts = {
+    .name = "async-teardown",
+    .implied_opt_name = "enable",
+    .head = QTAILQ_HEAD_INITIALIZER(qemu_async_teardown_opts.head),
+    .desc = {
+        { /* end of list */ }
+    },
+};
+
+static void register_async_teardown(void)
+{
+    qemu_add_opts(&qemu_async_teardown_opts);
+}
+opts_init(register_async_teardown);