qemu-devel
[Top][All Lists]
Advanced

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

Re: [PATCH 0/6] qemu-storage-daemon: QAPIfy --chardev


From: Markus Armbruster
Subject: Re: [PATCH 0/6] qemu-storage-daemon: QAPIfy --chardev
Date: Sun, 25 Oct 2020 18:42:42 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux)

Paolo Bonzini <pbonzini@redhat.com> writes:

> On 23/10/20 15:40, Markus Armbruster wrote:
>>>
>>> The benefit of the user creatable object approach is that we dont
>>> have to add custom CLI args for different types of object, nor write
>>> code to populate QOM from QAPI. The downside is that we're divorced
>>> from the QAPI schema, so loose introspection, and have a different
>>> type of tedious boilerplate code to write.
>>
>> Loss of QAPI introspection is the killer.
>> 
>> We have QOM introspection, but it's far too weak to serve as
>> replacement.  Besides, two introspection facilities is one too many.
>
> Wouldn't Eduardo+Kevin's work on object-add provide that too?

Yes, the issue "replacing chardev-add by object-add loses QAPI
introspection" evaporates when object-add becomes QAPI-introspectable.

>> Nevertheless, we need Kevin's work now to get a decent storage daemon
>> CLI while that's still easy to do.  We'll have to promise stability
>> soon, and then changes get much harder.
>
> I think we haven't answered the question of whether qsd needs a CLI at all.
>
> I looked recently at qemu_init and it struck me that, in principle, the
> only _really_ necessary command line options for QEMU are -sandbox,
> -name and possibly -trace (only to be able to trace the monitor).  For
> everything else, one could use LISTEN_FDS socket activation mechanism,
> or if there's no LISTEN_FDS environment variable open a QMP socket on
> stdin/stdout.

Nobody argues this can't be done.  Some of us argue it should not be
done :)

> For qemu-standard-daemon, that would be _really_ true and not just in
> principle I understand that having a command-line can be useful to
> developers as it's less unwieldy than JSON, but why does it have to be
> stable?

Let me split this into multiple questions:

1. Does qsd need a CLI beyond whatever is needed to provide QMP?

2. If yes, does it need to be stable?

3. Does it need to be machine-friendly?

4. Does it need to be human-friendly?

5. What does it mean to be human-friendly?

I'd expect Kevin to answer question 1. and 4. with an emphatic yes.  I
concur, because without a usable CLI, ad hoc usability is awful.  My
idea of "usable" is probably less demanding than Kevin's, but that's
question 5 already.

The step from a QMP command that returns nothing to machine-friendly CLI
option is almost trivial: -blockdev with a JSON argument proves it.
This makes me answer 3. with "why not?", and 2. with "this
machine-friendly interface is stable by construction".

We already paid for the step from machine-friendly CLI to a slightly
more human-friendly CLI: -blockdev with a dotted keys argument proves
it.  This makes me answer 4. with "why not / why override the qsd
maintainer?"

Question 5. is open-ended.  I think a truly human-friendly CLI will take
extra work, similar to how HMP does.  I believe it can be done with less
overhead than HMP has today.  I don't plan to sink a lot of time into it
myself, at least not in the immediate future.

>          Could we default to only 2-3 command-line options in the same
> fashion, and only accept --blockdev and friends if the user starts the
> command line with "qemu-storage-daemon --i-am-not-a-script"?

Making people type --i-am-not-a-script is begging for getting pelted
with vegetables at the next non-virtual KVM Forum.

I think what you're trying to accomplish is to tell a program off when
it uses a part of the CLI programs should not use.  My "Configurable
policy for handling deprecated interfaces" series can grow to do exactly
that, but it's opt-in (because I don't fancy getting pelted with
vegetables).




reply via email to

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