From: Markus Armbruster <armbru@redhat.com>
To: Peter Krempa <pkrempa@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>,
Kevin Wolf <kwolf@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
Boris Fiuczynski <fiuczy@linux.ibm.com>,
Qemu-block <qemu-block@nongnu.org>,
Libvirt <libvir-list@redhat.com>,
Cornelia Huck <cohuck@redhat.com>,
QEMU Developers <qemu-devel@nongnu.org>,
Christian Borntraeger <borntraeger@de.ibm.com>
Subject: Re: [Qemu-devel] [libvirt] [PULL 25/26] block: Remove deprecated -drive option serial
Date: Thu, 12 Jul 2018 13:33:37 +0200 [thread overview]
Message-ID: <87zhywpu26.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20180712071927.GX1148@andariel.pipo.sk> (Peter Krempa's message of "Thu, 12 Jul 2018 09:19:27 +0200")
Peter Krempa <pkrempa@redhat.com> writes:
> On Thu, Jul 12, 2018 at 08:59:44 +0200, Markus Armbruster wrote:
>> Peter Krempa <pkrempa@redhat.com> writes:
>> > On Tue, Jul 10, 2018 at 17:01:22 +0200, Cornelia Huck wrote:
>> >> On Tue, 10 Jul 2018 16:39:31 +0200
>> >> Peter Krempa <pkrempa@redhat.com> wrote:
>
> [...]
>
>> > An option is to do a automatic testing where one of this approaches will
>> > be enabled. For that you need a way to generate configurations which
>> > libvirt would use in real life. We have a rather big collection of XMLs
>> > which describe a valid configuration but the problem with using them on
>> > a real qemu is that most of the disk paths/network targets/other
>> > resources are made up and making them work with a real qemu would range
>> > from being painful to being impossible.
>>
>> I sympathize. However, it's not clear which one's harder, providing
>> environments for a sufficiently wide range of configurations (possibly
>> mockups), or hacking QEMU to do nothing but check configuration. QEMU
>
> That's the main reason I think we should make it possible to use the
> data for the 'qemuxml2argv' test suite in libvirt. We require that new
> features are covered by this so that means that the testsuite is
> possibly the most comprehensive collection of libvirt configurations I
> know of.
>
> It's not perfect as we in many cases don't test any possible
> value but just try to excercise the code to generate them and others are
> left behind.
>
> Another historical problem was that we've defined a set of capabilities
> rather than using any real example to do this so many of the
> commandlines generated and tested are basically impossible to get in
> real life.
>
> That's why I added testing with real capabilities. We'll just need to
> generate a bunch of files to achieve full coverage here.
>
>
>> isn't designed for that, and configuration checking is intertwined with
>> everything else. Complete disentanglement looks impractical to me. I
>
> I agree. Getting anything special than the real codepath may create
> bubbles of problems still. On the other hand we'll need some guidance on
> what's sufficient to do to execute the deprecation detection code.
>
> This may require some coding style guidelines in qemu. E.g. no
> deprecation warnings after the vCPUs are started. Running a full
> operating system to check the warinigns would be utterly impractical.
Hot-plugging may get you deprecation warnings after vCPU start. But I
get what you mean. Rule of thumb: first check configuration is
well-formed, then do stuff that may fail when configuration asks for the
impossible, and only then do stuff that doesn't use configuration.
> Preferrably we would get away with starting qemu and waiting for the
> monitor to start.
We'll see how far that gets us.
>> guess we could do something useful at the QAPI level, though. Yet
>> another reason to qapify the command line...
>
> That would be great, but I think that there's a subset of things that
> can be deprecated but can't be expressed by schema. In such case we
> still need to run the programatic checks to see.
There will always be stuff the schema can't express without complicating
the schema language a lot, and stuff the schema could express, but only
at a cost in readability we prefer not to pay.
To get the most mileage out of schema introspection, we should strive
for making things visible in there whenever practical.
>> > If we start from scratch you then lack coverage.
>> >
>> >> If we fail with exit(1), can libvirt check any message that is logged
>> >> right before that?
>> >
>> > Yes we currently use this for very early failures which occur prior to
>> > the monitor working.
>> >
>> >> > To make any reasonable use of -no-deprecated-options we'd also need
>> >> > something that simulates qemu startup (no resources are touched in fact)
>> >> > so that we can run it against the testsuite. Otherwise the use will be
>> >> > limited to developers using it with the configuration they are
>> >> > currently testing.
>> >>>
>> >> Would that moan loudly that you should poke the libvirt developers if
>> >> some kind of testsuite failure is detected? Or am I misunderstanding?
>> >
>> > Generally it should make somebody complain. But there is a problem.
>> > Since we are talking deprecation it can't be enabled by default. And by
>> > not making it default most of the users will not enable that option.
>>
>> I don't think end users should do the work of catching use of deprecated
>> features. It's a CI job.
>>
>> In a CI context, we don't need fancy QMP infrastructure to communicate
>> "you used a deprecated feature", we can get away with printing an
>> explanation to stderr and exit(1). That should make CI fail, and the
>> failure should make a developer read the explanation. To unbreak CI, he
>> can either fix the problem right away, or file a BZ and suppress the CI
>> failure until it's fixed, say by downgrading --deprecated=error to
>> --deprecated=warn.
>
> Definitely. Plain untranslated error message is fine. The only thing is
> that it should be easy to detect. exit(1) is that solution. Or rather
> exit($VALUE_SPECIFIC_FOR_DEPRECATION) so that we can automatically
> discriminate test failures from deprecation warnings.
We'll have to search for of exit(X), where X is a bad idea.
next prev parent reply other threads:[~2018-07-12 11:33 UTC|newest]
Thread overview: 111+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-15 14:20 [Qemu-devel] [PULL 00/26] Block layer patches Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 01/26] qemu-img: Fix assert when mapping unaligned raw file Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 02/26] iotests: Add test 221 to catch qemu-img map regression Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 03/26] jobs: fix stale wording Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 04/26] jobs: fix verb references in docs Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 05/26] rbd: Drop deprecated -drive parameter "filename" Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 06/26] iscsi: " Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 07/26] block: Add block-specific QDict header Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 08/26] qobject: Move block-specific qdict code to block-qdict.c Kevin Wolf
2018-06-19 19:29 ` Eric Blake
2018-06-15 14:20 ` [Qemu-devel] [PULL 09/26] block: Fix -blockdev for certain non-string scalars Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 10/26] block: Fix -drive " Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 11/26] block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts() Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 12/26] block: Factor out qobject_input_visitor_new_flat_confused() Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 13/26] block: Make remaining uses of qobject input visitor more robust Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 14/26] block-qdict: Simplify qdict_flatten_qdict() Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 15/26] block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist() Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 16/26] block-qdict: Clean up qdict_crumple() a bit Kevin Wolf
2018-06-15 14:20 ` [Qemu-devel] [PULL 17/26] block-qdict: Simplify qdict_is_list() some Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 18/26] check-block-qdict: Rename qdict_flatten()'s variables for clarity Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 19/26] check-block-qdict: Cover flattening of empty lists and dictionaries Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 20/26] block: Fix -blockdev / blockdev-add for empty objects and arrays Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 21/26] rbd: New parameter auth-client-required Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 22/26] rbd: New parameter key-secret Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 23/26] block: Remove deprecated -drive geometry options Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 24/26] block: Remove deprecated -drive option addr Kevin Wolf
2018-06-15 14:21 ` [Qemu-devel] [PULL 25/26] block: Remove deprecated -drive option serial Kevin Wolf
2018-06-22 11:38 ` Christian Borntraeger
2018-06-22 12:51 ` [Qemu-devel] request a revert for "block: Remove deprecated -drive option serial" (was block: Remove deprecated -drive option serial) Christian Borntraeger
2018-06-22 20:08 ` [Qemu-devel] [qemu-s390x] " Thomas Huth
2018-06-22 12:55 ` [Qemu-devel] [PULL 25/26] block: Remove deprecated -drive option serial Kevin Wolf
2018-06-22 13:36 ` Christian Borntraeger
2018-06-22 14:00 ` Christian Borntraeger
2018-06-22 14:02 ` [Qemu-devel] [libvirt] " Daniel P. Berrangé
2018-06-22 14:25 ` [Qemu-devel] " Kevin Wolf
2018-06-22 14:31 ` [Qemu-devel] [libvirt] " Daniel P. Berrangé
2018-06-25 9:53 ` Daniel P. Berrangé
2018-06-25 11:41 ` Kevin Wolf
2018-06-25 11:45 ` Peter Krempa
2018-07-02 8:04 ` Kevin Wolf
2018-07-03 10:53 ` Christian Borntraeger
2018-07-03 11:22 ` Daniel P. Berrangé
2018-07-03 11:32 ` Kevin Wolf
2018-07-03 11:35 ` Peter Maydell
2018-07-03 12:38 ` Christian Borntraeger
2018-07-03 11:35 ` Daniel P. Berrangé
2018-07-04 13:02 ` Cornelia Huck
2018-07-04 13:34 ` Kevin Wolf
2018-07-04 13:43 ` Daniel P. Berrangé
2018-07-04 14:23 ` Kevin Wolf
2018-07-04 13:52 ` Christian Borntraeger
2018-07-04 13:58 ` Cornelia Huck
2018-07-04 16:14 ` Peter Maydell
2018-07-06 11:11 ` Cornelia Huck
2018-07-06 14:56 ` Kevin Wolf
2018-07-06 15:05 ` Daniel P. Berrangé
2018-07-06 15:10 ` Peter Maydell
2018-07-09 6:33 ` Markus Armbruster
2018-07-09 11:08 ` Cornelia Huck
2018-07-09 11:17 ` Daniel P. Berrangé
2018-07-12 6:32 ` Markus Armbruster
2018-07-12 15:47 ` Thomas Huth
2018-07-13 11:35 ` Cornelia Huck
2018-07-16 10:06 ` Kashyap Chamarthy
2018-07-16 9:33 ` Daniel P. Berrangé
2018-07-09 7:29 ` Peter Krempa
2018-07-10 5:59 ` Markus Armbruster
2018-07-10 14:22 ` Cornelia Huck
2018-07-10 14:38 ` Kevin Wolf
2018-07-12 6:38 ` Markus Armbruster
2018-07-12 6:51 ` Markus Armbruster
2018-07-12 7:48 ` Cornelia Huck
2018-07-12 9:05 ` Kevin Wolf
2018-07-12 11:14 ` Markus Armbruster
2018-07-12 7:00 ` Peter Krempa
2018-07-12 11:19 ` Markus Armbruster
2018-07-10 14:39 ` Peter Krempa
2018-07-10 15:01 ` Cornelia Huck
2018-07-10 15:24 ` Peter Krempa
2018-07-11 6:53 ` Thomas Huth
2018-07-11 7:24 ` Cornelia Huck
2018-07-12 6:40 ` Markus Armbruster
2018-07-12 6:59 ` Markus Armbruster
2018-07-12 7:19 ` Peter Krempa
2018-07-12 11:33 ` Markus Armbruster [this message]
2018-07-10 17:01 ` Daniel P. Berrangé
2018-07-11 13:48 ` Kashyap Chamarthy
2018-07-10 15:09 ` Peter Maydell
2018-07-10 16:59 ` Daniel P. Berrangé
2018-07-09 6:58 ` Thomas Huth
2018-07-09 11:58 ` Cornelia Huck
2018-06-22 14:38 ` [Qemu-devel] " Christian Borntraeger
2018-06-22 14:47 ` Peter Maydell
2018-06-22 15:01 ` Kevin Wolf
2018-06-22 15:50 ` Christian Borntraeger
2018-06-22 15:40 ` Daniel P. Berrangé
2018-06-22 17:54 ` Kevin Wolf
2018-06-25 11:18 ` Daniel P. Berrangé
2018-06-25 10:01 ` Peter Maydell
2018-06-25 10:31 ` Peter Krempa
2018-06-25 10:35 ` Peter Maydell
2018-06-25 7:44 ` Thomas Huth
2018-06-22 14:19 ` Markus Armbruster
2018-06-22 14:25 ` [Qemu-devel] [libvirt] " Daniel P. Berrangé
2018-06-22 14:30 ` Daniel P. Berrangé
2018-06-22 15:00 ` Eric Blake
2018-06-25 7:16 ` Peter Krempa
2018-06-25 8:23 ` Thomas Huth
2018-06-25 9:04 ` Daniel P. Berrangé
2018-06-15 14:21 ` [Qemu-devel] [PULL 26/26] block: Remove dead deprecation warning code Kevin Wolf
2018-06-15 16:28 ` [Qemu-devel] [PULL 00/26] Block layer patches Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87zhywpu26.fsf@dusky.pond.sub.org \
--to=armbru@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=fiuczy@linux.ibm.com \
--cc=kwolf@redhat.com \
--cc=libvir-list@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pkrempa@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.