All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Cody <jcody@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, qemu-block@nongnu.org, kwolf@redhat.com,
	mreitz@redhat.com, eblake@redhat.com
Subject: Re: [Qemu-devel] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication
Date: Thu, 7 Jun 2018 17:33:03 -0400	[thread overview]
Message-ID: <20180607213303.GJ6435@localhost.localdomain> (raw)
In-Reply-To: <20180607062559.16127-1-armbru@redhat.com>

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
> 

  parent reply	other threads:[~2018-06-07 21:33 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-07  6:25 [Qemu-devel] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 01/19] rbd: Drop deprecated -drive parameter "filename" Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 02/19] iscsi: " Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 03/19] block: Add block-specific QDict header Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 04/19] fixup " Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 05/19] qobject: Move block-specific qdict code to block-qdict.c Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 06/19] block: Fix -blockdev for certain non-string scalars Markus Armbruster
2018-06-11 14:44   ` [Qemu-devel] [Qemu-block] " Max Reitz
2018-06-12 13:38   ` [Qemu-devel] " Kevin Wolf
2018-06-12 16:24     ` Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 07/19] block: Fix -drive " Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 08/19] block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts() Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 09/19] block: Factor out qobject_input_visitor_new_flat_confused() Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 10/19] block: Make remaining uses of qobject input visitor more robust Markus Armbruster
2018-06-12 14:43   ` Kevin Wolf
2018-06-12 16:32     ` Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 11/19] block-qdict: Simplify qdict_flatten_qdict() Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 12/19] block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist() Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 13/19] block-qdict: Clean up qdict_crumple() a bit Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 14/19] block-qdict: Simplify qdict_is_list() some Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 15/19] check-block-qdict: Rename qdict_flatten()'s variables for clarity Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 16/19] check-block-qdict: Cover flattening of empty lists and dictionaries Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 17/19] block: Fix -blockdev / blockdev-add for empty objects and arrays Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 18/19] rbd: New parameter auth-client-required Markus Armbruster
2018-06-07  6:25 ` [Qemu-devel] [RFC PATCH 19/19] rbd: New parameter key-secret Markus Armbruster
2018-06-07 21:33 ` Jeff Cody [this message]
2018-06-12 12:55   ` [Qemu-devel] [RFC PATCH 00/19] block: Configuration fixes and rbd authentication Jeff Cody
2018-06-12 19:04     ` Markus Armbruster

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=20180607213303.GJ6435@localhost.localdomain \
    --to=jcody@redhat.com \
    --cc=armbru@redhat.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@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.