MAINTAINERS | 2 + block.c | 1 + block/crypto.c | 6 +- block/gluster.c | 1 + block/iscsi.c | 24 +- block/nbd.c | 16 +- block/nfs.c | 8 +- block/parallels.c | 11 +- block/qcow.c | 11 +- block/qcow2.c | 11 +- block/qed.c | 11 +- block/quorum.c | 1 + block/rbd.c | 85 +++-- block/sheepdog.c | 23 +- block/snapshot.c | 1 + block/ssh.c | 16 +- block/vdi.c | 4 +- block/vhdx.c | 11 +- block/vpc.c | 11 +- block/vvfat.c | 1 + block/vxhs.c | 1 + blockdev.c | 1 + include/block/qdict.h | 34 ++ include/qapi/qmp/qdict.h | 17 - qapi/block-core.json | 15 + qobject/Makefile.objs | 1 + qobject/block-qdict.c | 722 ++++++++++++++++++++++++++++++++++++++ qobject/qdict.c | 628 --------------------------------- tests/Makefile.include | 4 + tests/check-block-qdict.c | 690 ++++++++++++++++++++++++++++++++++++ tests/check-qdict.c | 641 --------------------------------- tests/check-qobject.c | 1 + tests/test-replication.c | 1 + util/qemu-config.c | 1 + 34 files changed, 1573 insertions(+), 1439 deletions(-) create mode 100644 include/block/qdict.h create mode 100644 qobject/block-qdict.c create mode 100644 tests/check-block-qdict.c
This series is RFC because:
* It clashes with parts of Max's "[PATCH 00/13] block: Try to create
well typed json:{} filenames". I missed that one until too late,
sorry.
- I stole "[PATCH 06/13] block: Add block-specific QDict header",
and tacked on fixups I'd like to have.
- My qobject_input_visitor_new_flat_confused() addresses the same
general problem as Max's qdict_stringify_for_keyval(): the block
layer's confused use of QObject types. My solution fixes a number
of bugs in -blockdev, blockdev-add and -drive. If Max's solution
adds further value, we need to merge the two somehow.
- I changed qdict_flatten() to fix -blockdev and blockdev-add for
empty objects and arrays. Max fixed it to not mess up shallow
clones. We need to merge the two.
* Rbd testing is incomplete. Jeff Cody volunteered to test on his
rig. Results should be in soon.
Perhaps the series should be split in two: PATCH 01-17 are
configuration fixes, PATCH 18-19 are rbd authentication work. I may
still do that for the non-RFC patch submission.
Markus Armbruster (18):
rbd: Drop deprecated -drive parameter "filename"
iscsi: Drop deprecated -drive parameter "filename"
fixup block: Add block-specific QDict header
qobject: Move block-specific qdict code to block-qdict.c
block: Fix -blockdev for certain non-string scalars
block: Fix -drive for certain non-string scalars
block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()
block: Factor out qobject_input_visitor_new_flat_confused()
block: Make remaining uses of qobject input visitor more robust
block-qdict: Simplify qdict_flatten_qdict()
block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist()
block-qdict: Clean up qdict_crumple() a bit
block-qdict: Simplify qdict_is_list() some
check-block-qdict: Rename qdict_flatten()'s variables for clarity
check-block-qdict: Cover flattening of empty lists and dictionaries
block: Fix -blockdev / blockdev-add for empty objects and arrays
rbd: New parameter auth-client-required
rbd: New parameter key-secret
Max Reitz (1):
block: Add block-specific QDict header
MAINTAINERS | 2 +
block.c | 1 +
block/crypto.c | 6 +-
block/gluster.c | 1 +
block/iscsi.c | 24 +-
block/nbd.c | 16 +-
block/nfs.c | 8 +-
block/parallels.c | 11 +-
block/qcow.c | 11 +-
block/qcow2.c | 11 +-
block/qed.c | 11 +-
block/quorum.c | 1 +
block/rbd.c | 85 +++--
block/sheepdog.c | 23 +-
block/snapshot.c | 1 +
block/ssh.c | 16 +-
block/vdi.c | 4 +-
block/vhdx.c | 11 +-
block/vpc.c | 11 +-
block/vvfat.c | 1 +
block/vxhs.c | 1 +
blockdev.c | 1 +
include/block/qdict.h | 34 ++
include/qapi/qmp/qdict.h | 17 -
qapi/block-core.json | 15 +
qobject/Makefile.objs | 1 +
qobject/block-qdict.c | 722 ++++++++++++++++++++++++++++++++++++++
qobject/qdict.c | 628 ---------------------------------
tests/Makefile.include | 4 +
tests/check-block-qdict.c | 690 ++++++++++++++++++++++++++++++++++++
tests/check-qdict.c | 641 ---------------------------------
tests/check-qobject.c | 1 +
tests/test-replication.c | 1 +
util/qemu-config.c | 1 +
34 files changed, 1573 insertions(+), 1439 deletions(-)
create mode 100644 include/block/qdict.h
create mode 100644 qobject/block-qdict.c
create mode 100644 tests/check-block-qdict.c
--
2.17.1
On Thu, Jun 07, 2018 at 08:25:40AM +0200, Markus Armbruster wrote:
> This series is RFC because:
>
> * It clashes with parts of Max's "[PATCH 00/13] block: Try to create
> well typed json:{} filenames". I missed that one until too late,
> sorry.
>
> - I stole "[PATCH 06/13] block: Add block-specific QDict header",
> and tacked on fixups I'd like to have.
>
> - My qobject_input_visitor_new_flat_confused() addresses the same
> general problem as Max's qdict_stringify_for_keyval(): the block
> layer's confused use of QObject types. My solution fixes a number
> of bugs in -blockdev, blockdev-add and -drive. If Max's solution
> adds further value, we need to merge the two somehow.
>
> - I changed qdict_flatten() to fix -blockdev and blockdev-add for
> empty objects and arrays. Max fixed it to not mess up shallow
> clones. We need to merge the two.
>
> * Rbd testing is incomplete. Jeff Cody volunteered to test on his
> rig. Results should be in soon.
>
Here are some results from auth testing of various combinations; I haven't
completed all the combinations in my matrix yet, but what I have completed
looks like what I would expect.
These were all tested with blockdev-add QAPI commands against this patch
series.
I'll be away on PTO tomorrow (Friday), so I'll conclude testing on Monday.
Warning, long lines below, so don't read it on a vt220 (apologies in
advance if you do...):
Server | Client-Side (qemu host)
------------+--------------------------------------------------------------------------------------------------
| |
ServerAuth | user key-secret /etc/ceph/keyring auth-client-required | Result
------------+--------------------------------------------------------------------------------------------------
cephx, none | --- --- --- --- {"return": {}}
cephx, none | --- --- valid --- {"return": {}}
cephx, none | --- --- invalid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- --- {"return": {}}
cephx, none | --- invalid --- --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid --- {"return": {}}
cephx, none | admin --- valid ---
cephx, none | admin --- invalid ---
cephx, none | invalid --- valid ---
cephx, none | invalid --- invalid ---
cephx, none | --- --- --- none {"return": {}}
cephx, none | --- --- valid none {"return": {}}
cephx, none | --- --- invalid none {"return": {}}
cephx, none | --- valid --- none {"return": {}}
cephx, none | --- invalid --- none {"return": {}}
cephx, none | --- invalid valid none {"return": {}}
cephx, none | --- valid invalid none {"return": {}}
cephx, none | admin --- valid none {"return": {}}
cephx, none | admin --- invalid none {"return": {}}
cephx, none | invalid --- valid none {"return": {}}
cephx, none | invalid --- invalid none {"return": {}}
|
cephx, none | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
cephx, none | --- --- valid cephx {"return": {}}
cephx, none | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- cephx {"return": {}}
cephx, none | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid cephx {"return": {}}
cephx, none | admin --- valid cephx {"return": {}}
cephx, none | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | invalid --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
cephx, none | --- --- --- cephx, none {"return": {}}
cephx, none | --- --- valid cephx, none {"return": {}}
cephx, none | --- --- invalid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- cephx, none {"return": {}}
cephx, none | --- invalid --- cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid cephx, none {"return": {}}
cephx, none | admin --- valid cephx, none {"return": {}}
cephx, none | invalid --- valid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
none | --- --- --- none {"return": {}}
none | --- --- valid none {"return": {}}
none | --- --- invalid none {"return": {}}
none | --- valid --- none {"return": {}}
none | --- invalid --- none {"return": {}}
none | admin --- valid none {"return": {}}
none | invalid --- valid none {"return": {}}
|
none | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
none | --- --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- valid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
none | admin --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
none | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
|
none | --- --- --- cephx, none
none | --- --- valid cephx, none
none | --- --- invalid cephx, none
none | --- valid --- cephx, none
none | --- invalid --- cephx, none
none | admin --- valid cephx, none
none | invalid --- valid cephx, none
|
cephx | --- --- --- ---
cephx | --- --- valid ---
cephx | --- --- invalid ---
cephx | --- valid --- ---
cephx | --- invalid --- ---
cephx | admin --- valid ---
cephx | invalid --- valid ---
|
cephx | --- --- --- none
cephx | --- --- valid none
cephx | --- --- invalid none
cephx | --- valid --- none
cephx | --- invalid --- none
cephx | admin --- valid none
cephx | invalid --- valid none
|
cephx | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
cephx | --- --- valid cephx {"return": {}}
cephx | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | --- valid --- cephx {"return": {}}
cephx | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | admin --- valid cephx {"return": {}}
cephx | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
cephx | --- --- --- cephx, none
cephx | --- --- valid cephx, none
cephx | --- --- invalid cephx, none
cephx | --- valid --- cephx, none
cephx | --- invalid --- cephx, none
cephx | admin --- valid cephx, none
cephx | invalid --- valid cephx, none
> Perhaps the series should be split in two: PATCH 01-17 are
> configuration fixes, PATCH 18-19 are rbd authentication work. I may
> still do that for the non-RFC patch submission.
>
> Markus Armbruster (18):
> rbd: Drop deprecated -drive parameter "filename"
> iscsi: Drop deprecated -drive parameter "filename"
> fixup block: Add block-specific QDict header
> qobject: Move block-specific qdict code to block-qdict.c
> block: Fix -blockdev for certain non-string scalars
> block: Fix -drive for certain non-string scalars
> block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()
> block: Factor out qobject_input_visitor_new_flat_confused()
> block: Make remaining uses of qobject input visitor more robust
> block-qdict: Simplify qdict_flatten_qdict()
> block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist()
> block-qdict: Clean up qdict_crumple() a bit
> block-qdict: Simplify qdict_is_list() some
> check-block-qdict: Rename qdict_flatten()'s variables for clarity
> check-block-qdict: Cover flattening of empty lists and dictionaries
> block: Fix -blockdev / blockdev-add for empty objects and arrays
> rbd: New parameter auth-client-required
> rbd: New parameter key-secret
>
> Max Reitz (1):
> block: Add block-specific QDict header
>
> MAINTAINERS | 2 +
> block.c | 1 +
> block/crypto.c | 6 +-
> block/gluster.c | 1 +
> block/iscsi.c | 24 +-
> block/nbd.c | 16 +-
> block/nfs.c | 8 +-
> block/parallels.c | 11 +-
> block/qcow.c | 11 +-
> block/qcow2.c | 11 +-
> block/qed.c | 11 +-
> block/quorum.c | 1 +
> block/rbd.c | 85 +++--
> block/sheepdog.c | 23 +-
> block/snapshot.c | 1 +
> block/ssh.c | 16 +-
> block/vdi.c | 4 +-
> block/vhdx.c | 11 +-
> block/vpc.c | 11 +-
> block/vvfat.c | 1 +
> block/vxhs.c | 1 +
> blockdev.c | 1 +
> include/block/qdict.h | 34 ++
> include/qapi/qmp/qdict.h | 17 -
> qapi/block-core.json | 15 +
> qobject/Makefile.objs | 1 +
> qobject/block-qdict.c | 722 ++++++++++++++++++++++++++++++++++++++
> qobject/qdict.c | 628 ---------------------------------
> tests/Makefile.include | 4 +
> tests/check-block-qdict.c | 690 ++++++++++++++++++++++++++++++++++++
> tests/check-qdict.c | 641 ---------------------------------
> tests/check-qobject.c | 1 +
> tests/test-replication.c | 1 +
> util/qemu-config.c | 1 +
> 34 files changed, 1573 insertions(+), 1439 deletions(-)
> create mode 100644 include/block/qdict.h
> create mode 100644 qobject/block-qdict.c
> create mode 100644 tests/check-block-qdict.c
>
> --
> 2.17.1
>
On Thu, Jun 07, 2018 at 05:33:03PM -0400, Jeff Cody wrote:
> On Thu, Jun 07, 2018 at 08:25:40AM +0200, Markus Armbruster wrote:
> > This series is RFC because:
> >
> > * It clashes with parts of Max's "[PATCH 00/13] block: Try to create
> > well typed json:{} filenames". I missed that one until too late,
> > sorry.
> >
> > - I stole "[PATCH 06/13] block: Add block-specific QDict header",
> > and tacked on fixups I'd like to have.
> >
> > - My qobject_input_visitor_new_flat_confused() addresses the same
> > general problem as Max's qdict_stringify_for_keyval(): the block
> > layer's confused use of QObject types. My solution fixes a number
> > of bugs in -blockdev, blockdev-add and -drive. If Max's solution
> > adds further value, we need to merge the two somehow.
> >
> > - I changed qdict_flatten() to fix -blockdev and blockdev-add for
> > empty objects and arrays. Max fixed it to not mess up shallow
> > clones. We need to merge the two.
> >
> > * Rbd testing is incomplete. Jeff Cody volunteered to test on his
> > rig. Results should be in soon.
> >
>
> Here are some results from auth testing of various combinations; I haven't
> completed all the combinations in my matrix yet, but what I have completed
> looks like what I would expect.
>
> These were all tested with blockdev-add QAPI commands against this patch
> series.
>
> I'll be away on PTO tomorrow (Friday), so I'll conclude testing on Monday.
>
> Warning, long lines below, so don't read it on a vt220 (apologies in
> advance if you do...):
>
Below is the rest of the matrix filled out. Everything looks OK to me, the
ones that were a bit different than I expected were when the server was
'none', and we passed an bad key-secret. But that isn't a qemu/qapi issue,
and not really an issue at all (just different from what I expected).
Completed tests:
Server | Client-Side (qemu host)
------------+--------------------------------------------------------------------------------------------------
| |
ServerAuth | user key-secret /etc/ceph/keyring auth-client-required | Result
------------+--------------------------------------------------------------------------------------------------
cephx, none | --- --- --- --- {"return": {}}
cephx, none | --- --- valid --- {"return": {}}
cephx, none | --- --- invalid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- --- {"return": {}}
cephx, none | --- invalid --- --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid --- {"return": {}}
cephx, none | admin --- valid --- {"return": {}}
cephx, none | admin --- invalid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | invalid --- valid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | invalid --- invalid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- --- --- none {"return": {}}
cephx, none | --- --- valid none {"return": {}}
cephx, none | --- --- invalid none {"return": {}}
cephx, none | --- valid --- none {"return": {}}
cephx, none | --- invalid --- none {"return": {}}
cephx, none | --- invalid valid none {"return": {}}
cephx, none | --- valid invalid none {"return": {}}
cephx, none | admin --- valid none {"return": {}}
cephx, none | admin --- invalid none {"return": {}}
cephx, none | invalid --- valid none {"return": {}}
cephx, none | invalid --- invalid none {"return": {}}
|
cephx, none | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
cephx, none | --- --- valid cephx {"return": {}}
cephx, none | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- cephx {"return": {}}
cephx, none | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid cephx {"return": {}}
cephx, none | admin --- valid cephx {"return": {}}
cephx, none | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | invalid --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
cephx, none | --- --- --- cephx, none {"return": {}}
cephx, none | --- --- valid cephx, none {"return": {}}
cephx, none | --- --- invalid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid --- cephx, none {"return": {}}
cephx, none | --- invalid --- cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- invalid valid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx, none | --- valid invalid cephx, none {"return": {}}
cephx, none | admin --- valid cephx, none {"return": {}}
cephx, none | invalid --- valid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
none | --- --- --- none {"return": {}}
none | --- --- valid none {"return": {}}
none | --- --- invalid none {"return": {}}
none | --- valid --- none {"return": {}}
none | --- invalid --- none {"return": {}}
none | admin --- valid none {"return": {}}
none | invalid --- valid none {"return": {}}
|
none | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
none | --- --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- valid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
none | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
none | admin --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
none | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
|
none | --- --- --- cephx, none {"return": {}}
none | --- --- valid cephx, none {"return": {}}
none | --- --- invalid cephx, none {"return": {}}
none | --- valid --- cephx, none {"return": {}}
none | --- invalid --- cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
none | admin --- valid cephx, none {"return": {}}
none | invalid --- valid cephx, none {"return": {}}
cephx, none | --- --- --- --- {"return": {}}
cephx, none | --- --- valid --- {"return": {}}
|
none | --- --- --- --- {"return": {}}
|
cephx | --- --- --- --- {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | --- --- valid --- {"return": {}}
cephx | --- --- invalid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | --- valid --- --- {"return": {}}
cephx | --- invalid --- --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | admin --- valid --- {"return": {}}
cephx | invalid --- valid --- {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
cephx | --- --- --- none
cephx | --- --- valid none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | --- --- invalid none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | --- valid --- none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | --- invalid --- none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | admin --- valid none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | invalid --- valid none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
|
cephx | --- --- --- cephx {"error": {"class": "GenericError", "desc": "error connecting: No such file or directory"}}
cephx | --- --- valid cephx {"return": {}}
cephx | --- --- invalid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | --- valid --- cephx {"return": {}}
cephx | --- invalid --- cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | admin --- valid cephx {"return": {}}
cephx | invalid --- valid cephx {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
|
cephx | --- --- --- cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Operation not supported"}}
cephx | --- --- valid cephx, none {"return": {}}
cephx | --- --- invalid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | --- valid --- cephx, none {"return": {}}
cephx | --- invalid --- cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
cephx | admin --- valid cephx, none {"return": {}}
cephx | invalid --- valid cephx, none {"error": {"class": "GenericError", "desc": "error connecting: Invalid argument"}}
>
>
>
>
>
> > Perhaps the series should be split in two: PATCH 01-17 are
> > configuration fixes, PATCH 18-19 are rbd authentication work. I may
> > still do that for the non-RFC patch submission.
> >
> > Markus Armbruster (18):
> > rbd: Drop deprecated -drive parameter "filename"
> > iscsi: Drop deprecated -drive parameter "filename"
> > fixup block: Add block-specific QDict header
> > qobject: Move block-specific qdict code to block-qdict.c
> > block: Fix -blockdev for certain non-string scalars
> > block: Fix -drive for certain non-string scalars
> > block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()
> > block: Factor out qobject_input_visitor_new_flat_confused()
> > block: Make remaining uses of qobject input visitor more robust
> > block-qdict: Simplify qdict_flatten_qdict()
> > block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist()
> > block-qdict: Clean up qdict_crumple() a bit
> > block-qdict: Simplify qdict_is_list() some
> > check-block-qdict: Rename qdict_flatten()'s variables for clarity
> > check-block-qdict: Cover flattening of empty lists and dictionaries
> > block: Fix -blockdev / blockdev-add for empty objects and arrays
> > rbd: New parameter auth-client-required
> > rbd: New parameter key-secret
> >
> > Max Reitz (1):
> > block: Add block-specific QDict header
> >
> > MAINTAINERS | 2 +
> > block.c | 1 +
> > block/crypto.c | 6 +-
> > block/gluster.c | 1 +
> > block/iscsi.c | 24 +-
> > block/nbd.c | 16 +-
> > block/nfs.c | 8 +-
> > block/parallels.c | 11 +-
> > block/qcow.c | 11 +-
> > block/qcow2.c | 11 +-
> > block/qed.c | 11 +-
> > block/quorum.c | 1 +
> > block/rbd.c | 85 +++--
> > block/sheepdog.c | 23 +-
> > block/snapshot.c | 1 +
> > block/ssh.c | 16 +-
> > block/vdi.c | 4 +-
> > block/vhdx.c | 11 +-
> > block/vpc.c | 11 +-
> > block/vvfat.c | 1 +
> > block/vxhs.c | 1 +
> > blockdev.c | 1 +
> > include/block/qdict.h | 34 ++
> > include/qapi/qmp/qdict.h | 17 -
> > qapi/block-core.json | 15 +
> > qobject/Makefile.objs | 1 +
> > qobject/block-qdict.c | 722 ++++++++++++++++++++++++++++++++++++++
> > qobject/qdict.c | 628 ---------------------------------
> > tests/Makefile.include | 4 +
> > tests/check-block-qdict.c | 690 ++++++++++++++++++++++++++++++++++++
> > tests/check-qdict.c | 641 ---------------------------------
> > tests/check-qobject.c | 1 +
> > tests/test-replication.c | 1 +
> > util/qemu-config.c | 1 +
> > 34 files changed, 1573 insertions(+), 1439 deletions(-)
> > create mode 100644 include/block/qdict.h
> > create mode 100644 qobject/block-qdict.c
> > create mode 100644 tests/check-block-qdict.c
> >
> > --
> > 2.17.1
> >
Jeff Cody <jcody@redhat.com> writes: > On Thu, Jun 07, 2018 at 05:33:03PM -0400, Jeff Cody wrote: >> Here are some results from auth testing of various combinations; I haven't >> completed all the combinations in my matrix yet, but what I have completed >> looks like what I would expect. >> >> These were all tested with blockdev-add QAPI commands against this patch >> series. >> >> I'll be away on PTO tomorrow (Friday), so I'll conclude testing on Monday. >> >> Warning, long lines below, so don't read it on a vt220 (apologies in >> advance if you do...): >> > > Below is the rest of the matrix filled out. Everything looks OK to me, the > ones that were a bit different than I expected were when the server was > 'none', and we passed an bad key-secret. But that isn't a qemu/qapi issue, > and not really an issue at all (just different from what I expected). > > Completed tests: [...] Looks good to me. Thanks for your help!
© 2016 - 2026 Red Hat, Inc.