From: Kevin Wolf <kwolf@redhat.com>
To: Damien Hedde <damien.hedde@greensocs.com>
Cc: Peter Krempa <pkrempa@redhat.com>,
berrange@redhat.com, ehabkost@redhat.com, qemu-block@nongnu.org,
libvir-list@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com,
its@irrelevant.dk, pbonzini@redhat.com
Subject: Re: [PATCH 09/11] qdev: Avoid QemuOpts in QMP device_add
Date: Mon, 4 Oct 2021 16:22:22 +0200 [thread overview]
Message-ID: <YVsOHo/Vgp6giImy@redhat.com> (raw)
In-Reply-To: <4d932317-a6aa-40d7-e8b4-86d23638a8bb@greensocs.com>
Am 04.10.2021 um 14:18 hat Damien Hedde geschrieben:
>
>
> On 10/1/21 16:42, Peter Krempa wrote:
> > On Fri, Sep 24, 2021 at 11:04:25 +0200, Kevin Wolf wrote:
> > > Directly call qdev_device_add_from_qdict() for QMP device_add instead of
> > > first going through QemuOpts and converting back to QDict.
> > >
> > > Note that this changes the behaviour of device_add, though in ways that
> > > should be considered bug fixes:
> > >
> > > QemuOpts ignores differences between data types, so you could
> > > successfully pass a string "123" for an integer property, or a string
> > > "on" for a boolean property (and vice versa). After this change, the
> > > correct data type for the property must be used in the JSON input.
> > >
> > > qemu_opts_from_qdict() also silently ignores any options whose value is
> > > a QDict, QList or QNull.
> >
> > Sorry for chiming in a bit late, but preferrably this commit should be
> > postponed to at least the next release so that we decrease the amount of
> > libvirt users broken by this.
> >
> > Granted users are supposed to use new libvirt with new qemu but that's
> > not always the case.
> >
> > Anyways, libvirt is currently mangling all the types to strings with
> > device_add. I'm currently working on fixing it and it will hopefully be
> > done until next-month's release, but preferrably we increase the window
> > of working combinations by postponing this until the next release.
>
> Switching to qdict is really an improvement I think.
>
> If we choose to keep legacy behavior working for now, I think we
> should find a way to still do this switch. Maybe we can temporarily
> keep the str_to_int and str_to_bool conversion when converting the
> qdict to the qdev properties afterward?
I guess we can keep the detour through QemuOpts for QMP for now, and
make sure that the command line code bypasses this bit and still
requires correct types for JSON input. It's only this patch that breaks
compatibility with libvirt, patch 8 should still be okay.
Kevin
next prev parent reply other threads:[~2021-10-04 14:24 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-24 9:04 [PATCH 00/11] qdev: Add JSON -device and fix QMP device_add Kevin Wolf
2021-09-24 9:04 ` [PATCH 01/11] qom: Reduce use of error_propagate() Kevin Wolf
2021-09-24 13:23 ` Vladimir Sementsov-Ogievskiy
2021-09-24 14:04 ` Markus Armbruster
2021-09-24 18:14 ` Eric Blake
2021-09-24 9:04 ` [PATCH 02/11] iotests/245: Fix type for iothread property Kevin Wolf
2021-09-24 13:33 ` Vladimir Sementsov-Ogievskiy
2021-09-24 9:04 ` [PATCH 03/11] iotests/051: Fix typo Kevin Wolf
2021-09-24 13:35 ` Vladimir Sementsov-Ogievskiy
2021-09-24 9:04 ` [PATCH 04/11] qdev: Avoid using string visitor for properties Kevin Wolf
2021-09-24 18:40 ` Eric Blake
2021-09-24 9:04 ` [PATCH 05/11] qdev: Make DeviceState.id independent of QemuOpts Kevin Wolf
2021-09-24 14:02 ` Vladimir Sementsov-Ogievskiy
2021-09-24 15:10 ` Kevin Wolf
2021-09-24 15:14 ` Vladimir Sementsov-Ogievskiy
2021-09-24 9:04 ` [PATCH 06/11] qdev: Add Error parameter to qdev_set_id() Kevin Wolf
2021-09-24 14:09 ` Vladimir Sementsov-Ogievskiy
2021-09-27 10:33 ` Damien Hedde
2021-10-05 11:09 ` Kevin Wolf
2021-09-24 9:04 ` [PATCH 07/11] qemu-option: Allow deleting opts during qemu_opts_foreach() Kevin Wolf
2021-09-24 14:14 ` Vladimir Sementsov-Ogievskiy
2021-09-24 9:04 ` [PATCH 08/11] qdev: Base object creation on QDict rather than QemuOpts Kevin Wolf
2021-09-24 18:53 ` Eric Blake
2021-09-24 9:04 ` [PATCH 09/11] qdev: Avoid QemuOpts in QMP device_add Kevin Wolf
2021-09-24 18:56 ` Eric Blake
2021-09-27 11:06 ` Damien Hedde
2021-09-27 11:39 ` Kevin Wolf
2021-10-05 14:37 ` Kevin Wolf
2021-10-05 15:52 ` Damien Hedde
2021-10-05 17:33 ` Kevin Wolf
2021-10-06 8:21 ` Juan Quintela
2021-10-06 9:20 ` Laurent Vivier
2021-10-06 10:53 ` Kevin Wolf
2021-10-06 11:09 ` Laurent Vivier
2021-10-01 14:42 ` Peter Krempa
2021-10-04 12:18 ` Damien Hedde
2021-10-04 14:22 ` Kevin Wolf [this message]
2021-09-24 9:04 ` [PATCH 10/11] vl: Enable JSON syntax for -device Kevin Wolf
2021-09-24 19:00 ` Eric Blake
2021-09-24 9:04 ` [PATCH 11/11] Deprecate stable non-JSON -device and -object Kevin Wolf
2021-09-24 19:02 ` Eric Blake
2021-09-27 8:15 ` Paolo Bonzini
2021-09-27 8:21 ` Daniel P. Berrangé
2021-09-27 10:17 ` Kevin Wolf
2021-09-27 10:37 ` Daniel P. Berrangé
2021-09-27 9:00 ` Peter Maydell
2021-09-27 11:27 ` Kevin Wolf
2021-09-27 12:52 ` Peter Maydell
2021-09-27 16:10 ` Kevin Wolf
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=YVsOHo/Vgp6giImy@redhat.com \
--to=kwolf@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=damien.hedde@greensocs.com \
--cc=ehabkost@redhat.com \
--cc=its@irrelevant.dk \
--cc=libvir-list@redhat.com \
--cc=pbonzini@redhat.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).