Re: [Qemu-block] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication

2018-06-12 Thread Jeff Cody
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  |   userkey-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 ---   

Re: [Qemu-block] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication

2018-06-11 Thread Max Reitz
On 2018-06-11 16:52, Max Reitz wrote:
> On 2018-06-07 08:25, 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.
> 
> So that looks trivial to change in my series (just merge the
> qdict_stringify_for_keyval() + qdict_crumple() into one
> qdict_crumple_for_keyval_qiv()).

Err, that's static, so actually "qdict_stringify_for_keyval() +
qdict_crumple() + qobject_input_visitor_new_keyval()" ->
"qobject_input_visitor_new_flat_confused()".

> 
>>   - 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.
> 
> That seems possible.  I suppose I'll just need to figure out the bugs
> after your series and fix them again. ;-)

I can now report that indeed all worked out fine, so I'll just base v2
of my series on yours.

Max



signature.asc
Description: OpenPGP digital signature


Re: [Qemu-block] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication

2018-06-11 Thread Max Reitz
On 2018-06-07 08:25, 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.

So that looks trivial to change in my series (just merge the
qdict_stringify_for_keyval() + qdict_crumple() into one
qdict_crumple_for_keyval_qiv()).

>   - 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.

That seems possible.  I suppose I'll just need to figure out the bugs
after your series and fix them again. ;-)

Max

> * 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
> 




signature.asc
Description: OpenPGP digital signature


Re: [Qemu-block] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication

2018-06-07 Thread Jeff Cody
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  |   userkey-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   ---

[Qemu-block] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication

2018-06-07 Thread Markus Armbruster
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