diff options
| author | Markus Armbruster <armbru@redhat.com> | 2018-06-14 21:14:41 +0200 |
|---|---|---|
| committer | Kevin Wolf <kwolf@redhat.com> | 2018-06-15 14:49:44 +0200 |
| commit | 2860b2b2cb883969c8f6464bd9f8bc88742c5c73 (patch) | |
| tree | 02c5e733d23f7724eca138267e4a3b8ad51a529a /hw/usb/dev-storage.c | |
| parent | bef96b1549907b005ce1fa1456d2a0910d2a1aa5 (diff) | |
| download | focaccia-qemu-2860b2b2cb883969c8f6464bd9f8bc88742c5c73.tar.gz focaccia-qemu-2860b2b2cb883969c8f6464bd9f8bc88742c5c73.zip | |
block: Fix -blockdev / blockdev-add for empty objects and arrays
-blockdev and blockdev-add silently ignore empty objects and arrays in their argument. That's because qmp_blockdev_add() converts the argument to a flat QDict, and qdict_flatten() eats empty QDict and QList members. For instance, we ignore an empty BlockdevOptions member @cache. No real harm, as absent means the same as empty there. Thus, the flaw puts an artificial restriction on the QAPI schema: we can't have potentially empty objects and arrays within BlockdevOptions, except when they're optional and "empty" has the same meaning as "absent". Our QAPI schema satisfies this restriction (I checked), but it's a trap for the unwary, and a temptation to employ awkward workarounds for the wary. Let's get rid of it. Change qdict_flatten() and qdict_crumple() to treat empty dictionaries and lists exactly like scalars. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'hw/usb/dev-storage.c')
0 files changed, 0 insertions, 0 deletions