qemu-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-commits] [qemu/qemu] e0b371: qemu-img: Fix assert when mapping una


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] e0b371: qemu-img: Fix assert when mapping unaligned raw fi...
Date: Fri, 15 Jun 2018 09:28:15 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: e0b371ed5e2db079051139136fd0478728b6a58f
      
https://github.com/qemu/qemu/commit/e0b371ed5e2db079051139136fd0478728b6a58f
  Author: Eric Blake <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qemu-img.c

  Log Message:
  -----------
  qemu-img: Fix assert when mapping unaligned raw file

Commit a290f085 exposed a latent bug in qemu-img map introduced
during the conversion of block status to be byte-based.  Earlier in
commit 5e344dd8, the internal interface get_block_status() switched
to take byte-based parameters, but still called a sector-based
block layer function; as such, rounding was added in the lone
caller to obey the contract.  However, commit 237d78f8 changed
get_block_status() to truly be byte-based, at which point rounding
to sector boundaries can result in calling bdrv_block_status() with
'bytes == 0' (a coding error) when the boundary between data and a
hole falls mid-sector (true for the past-EOF implicit hole present
in POSIX files).  Fix things by removing the rounding that is now
no longer necessary.

See also https://bugzilla.redhat.com/1589738

Fixes: 237d78f8
Reported-by: Dan Kenigsberg <address@hidden>
Reported-by: Nir Soffer <address@hidden>
Reported-by: Maor Lipchuk <address@hidden>
CC: address@hidden
Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c6a9d2f6f9bc0c163b3a3073126464a2446bad5f
      
https://github.com/qemu/qemu/commit/c6a9d2f6f9bc0c163b3a3073126464a2446bad5f
  Author: Eric Blake <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    A tests/qemu-iotests/221
    A tests/qemu-iotests/221.out
    M tests/qemu-iotests/group

  Log Message:
  -----------
  iotests: Add test 221 to catch qemu-img map regression

Although qemu-img creates aligned files (by rounding up), it
must also gracefully handle files that are not sector-aligned.
Test that the bug fixed in the previous patch does not recur.

It's a bit annoying that we can see the (implicit) hole past
the end of the file on to the next sector boundary, so if we
ever reach the point where we report a byte-accurate size rather
than our current behavior of always rounding up, this test will
probably need a slight modification.

Signed-off-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c5b09f3f2c4db32f39ecbde2cf2f78e7a657a85d
      
https://github.com/qemu/qemu/commit/c5b09f3f2c4db32f39ecbde2cf2f78e7a657a85d
  Author: John Snow <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qapi/job.json

  Log Message:
  -----------
  jobs: fix stale wording

During the design for manual completion, we decided not to use the
"manual" property as a shorthand for both auto-dismiss and auto-finalize.

Fix the wording.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: b8a366feb2aa2200c42fa983a9c607fb78a501db
      
https://github.com/qemu/qemu/commit/b8a366feb2aa2200c42fa983a9c607fb78a501db
  Author: John Snow <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qapi/job.json

  Log Message:
  -----------
  jobs: fix verb references in docs

These point to the job versions now, not the blockjob versions which
don't really exist anymore.

Except set-speed, which does. It sticks out like a sore thumb. This
patch doesn't fix that, but it doesn't make it any worse, either.

Signed-off-by: John Snow <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: bb9f762ff35459e34630d731a5a91c02602150d1
      
https://github.com/qemu/qemu/commit/bb9f762ff35459e34630d731a5a91c02602150d1
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/rbd.c

  Log Message:
  -----------
  rbd: Drop deprecated -drive parameter "filename"

Parameter "filename" is deprecated since commit 91589d9e5ca, v2.10.0.
Time to get rid of it.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: deadbb8ebb5c253da9b8ed02ab51a0fadf60edc7
      
https://github.com/qemu/qemu/commit/deadbb8ebb5c253da9b8ed02ab51a0fadf60edc7
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/iscsi.c

  Log Message:
  -----------
  iscsi: Drop deprecated -drive parameter "filename"

Parameter "filename" is deprecated since commit 5c3ad1a6a8f, v2.10.0.
Time to get rid of it.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 609f45ea9507fc1603eaeda7f5066b99beac6721
      
https://github.com/qemu/qemu/commit/609f45ea9507fc1603eaeda7f5066b99beac6721
  Author: Max Reitz <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block.c
    M block/gluster.c
    M block/iscsi.c
    M block/nbd.c
    M block/nfs.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/quorum.c
    M block/rbd.c
    M block/sheepdog.c
    M block/snapshot.c
    M block/ssh.c
    M block/vhdx.c
    M block/vpc.c
    M block/vvfat.c
    M block/vxhs.c
    M blockdev.c
    A include/block/qdict.h
    M include/qapi/qmp/qdict.h
    M qobject/qdict.c
    M tests/check-qdict.c
    M tests/check-qobject.c
    M tests/test-replication.c
    M util/qemu-config.c

  Log Message:
  -----------
  block: Add block-specific QDict header

There are numerous QDict functions that have been introduced for and are
used only by the block layer.  Move their declarations into an own
header file to reflect that.

While qdict_extract_subqdict() is in fact used outside of the block
layer (in util/qemu-config.c), it is still a function related very
closely to how the block layer works with nested QDicts, namely by
sometimes flattening them.  Therefore, its declaration is put into this
header as well and util/qemu-config.c includes it with a comment stating
exactly which function it needs.

Suggested-by: Markus Armbruster <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
Message-Id: <address@hidden>
[Copyright note tweaked, superfluous includes dropped]
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 0bcc8e5bd8d6fd6e5cb6462054f7cfa45b282f9a
      
https://github.com/qemu/qemu/commit/0bcc8e5bd8d6fd6e5cb6462054f7cfa45b282f9a
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M MAINTAINERS
    M qobject/Makefile.objs
    A qobject/block-qdict.c
    M qobject/qdict.c
    M tests/Makefile.include
    A tests/check-block-qdict.c
    M tests/check-qdict.c

  Log Message:
  -----------
  qobject: Move block-specific qdict code to block-qdict.c

Pure code motion, except for two brace placements and a comment
tweaked to appease checkpatch.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e5af0da1dcbfb1a4694150f9954554fb6df88819
      
https://github.com/qemu/qemu/commit/e5af0da1dcbfb1a4694150f9954554fb6df88819
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/nfs.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/rbd.c
    M block/sheepdog.c
    M block/vhdx.c
    M block/vpc.c
    M include/block/qdict.h
    M qobject/block-qdict.c

  Log Message:
  -----------
  block: Fix -blockdev for certain non-string scalars

Configuration flows through the block subsystem in a rather peculiar
way.  Configuration made with -drive enters it as QemuOpts.
Configuration made with -blockdev / blockdev-add enters it as QAPI
type BlockdevOptions.  The block subsystem uses QDict, QemuOpts and
QAPI types internally.  The precise flow is next to impossible to
explain (I tried for this commit message, but gave up after wasting
several hours).  What I can explain is a flaw in the BlockDriver
interface that leads to this bug:

    $ qemu-system-x86_64 -blockdev 
node-name=n1,driver=nfs,server.type=inet,server.host=localhost,path=/foo/bar,user=1234
    qemu-system-x86_64: -blockdev 
node-name=n1,driver=nfs,server.type=inet,server.host=localhost,path=/foo/bar,user=1234:
 Internal error: parameter user invalid

QMP blockdev-add is broken the same way.

Here's what happens.  The block layer passes configuration represented
as flat QDict (with dotted keys) to BlockDriver methods
.bdrv_file_open().  The QDict's members are typed according to the
QAPI schema.

nfs_file_open() converts it to QAPI type BlockdevOptionsNfs, with
qdict_crumple() and a qobject input visitor.

This visitor comes in two flavors.  The plain flavor requires scalars
to be typed according to the QAPI schema.  That's the case here.  The
keyval flavor requires string scalars.  That's not the case here.
nfs_file_open() uses the latter, and promptly falls apart for members
@user, @group, @tcp-syn-count, @readahead-size, @page-cache-size,
@debug.

Switching to the plain flavor would fix -blockdev, but break -drive,
because there the scalars arrive in nfs_file_open() as strings.

The proper fix would be to replace the QDict by QAPI type
BlockdevOptions in the BlockDriver interface.  Sadly, that's beyond my
reach right now.

Next best would be to fix the block layer to always pass correctly
typed QDicts to the BlockDriver methods.  Also beyond my reach.

What I can do is throw another hack onto the pile: have
nfs_file_open() convert all members to string, so use of the keyval
flavor actually works, by replacing qdict_crumple() by new function
qdict_crumple_for_keyval_qiv().

The pattern "pass result of qdict_crumple() to
qobject_input_visitor_new_keyval()" occurs several times more:

* qemu_rbd_open()

  Same issue as nfs_file_open(), but since BlockdevOptionsRbd has only
  string members, its only a latent bug.  Fix it anyway.

* parallels_co_create_opts(), qcow_co_create_opts(),
  qcow2_co_create_opts(), bdrv_qed_co_create_opts(),
  sd_co_create_opts(), vhdx_co_create_opts(), vpc_co_create_opts()

  These work, because they create the QDict with
  qemu_opts_to_qdict_filtered(), which creates only string scalars.
  The function sports a TODO comment asking for better typing; that's
  going to be fun.  Use qdict_crumple_for_keyval_qiv() to be safe.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 374c52467a38c2e811f6c0db4edc9ea7d5f34341
      
https://github.com/qemu/qemu/commit/374c52467a38c2e811f6c0db4edc9ea7d5f34341
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/nbd.c
    M block/sheepdog.c
    M block/ssh.c

  Log Message:
  -----------
  block: Fix -drive for certain non-string scalars

The previous commit fixed -blockdev breakage due to misuse of the
qobject input visitor's keyval flavor in bdrv_file_open().  The commit
message explain why using the plain flavor would be just as wrong; it
would break -drive.  Turns out we break it in three places:
nbd_open(), sd_open() and ssh_file_open().  They are even marked
FIXME.  Example breakage:

    $ qemu-system-x86 -drive 
node-name=n1,driver=nbd,server.type=inet,server.host=localhost,server.port=1234,server.numeric=off
    qemu-system-x86: -drive 
node-name=n1,driver=nbd,server.type=inet,server.host=localhost,server.port=1234,server.numeric=off:
 Invalid parameter type for 'numeric', expected: boolean

Fix it the same way: replace qdict_crumple() by
qdict_crumple_for_keyval_qiv(), and switch from plain to the keyval
flavor.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 92adf9dbcd3cf9cedddae995b04a99f5c42ae08c
      
https://github.com/qemu/qemu/commit/92adf9dbcd3cf9cedddae995b04a99f5c42ae08c
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/vhdx.c
    M block/vpc.c

  Log Message:
  -----------
  block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()

The following pattern occurs in the .bdrv_co_create_opts() methods of
parallels, qcow, qcow2, qed, vhdx and vpc:

    qobj = qdict_crumple_for_keyval_qiv(qdict, errp);
    qobject_unref(qdict);
    qdict = qobject_to(QDict, qobj);
    if (qdict == NULL) {
   ret = -EINVAL;
   goto done;
    }

    v = qobject_input_visitor_new_keyval(QOBJECT(qdict));
    [...]
    ret = 0;
done:
    qobject_unref(qdict);
    [...]
    return ret;

If qobject_to() fails, we return failure without setting errp.  That's
wrong.  As far as I can tell, it cannot fail here.  Clean it up
anyway, by removing the useless conversion.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: af91062ee1408f7f5bb58389d355d29a5040c648
      
https://github.com/qemu/qemu/commit/af91062ee1408f7f5bb58389d355d29a5040c648
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/nbd.c
    M block/nfs.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/rbd.c
    M block/sheepdog.c
    M block/ssh.c
    M block/vhdx.c
    M block/vpc.c
    M include/block/qdict.h
    M qobject/block-qdict.c

  Log Message:
  -----------
  block: Factor out qobject_input_visitor_new_flat_confused()

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: f853465aacb45dbb07e4cc9815e39b55e10dc690
      
https://github.com/qemu/qemu/commit/f853465aacb45dbb07e4cc9815e39b55e10dc690
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/crypto.c
    M block/vdi.c

  Log Message:
  -----------
  block: Make remaining uses of qobject input visitor more robust

Remaining uses of qobject_input_visitor_new_keyval() in the block
subsystem:

* block_crypto_open_opts_init()
  Currently doesn't visit any non-string scalars, thus safe.  It's
  called from
  - block_crypto_open_luks()
    Creates the QDict with qemu_opts_to_qdict_filtered(), which
    creates only string scalars, but has a TODO asking for other types.
  - qcow_open()
  - qcow2_open(), qcow2_co_invalidate_cache(), qcow2_reopen_prepare()

* block_crypto_create_opts_init(), called from
  - block_crypto_co_create_opts_luks()
    Also creates the QDict with qemu_opts_to_qdict_filtered().

* vdi_co_create_opts()
  Also creates the QDict with qemu_opts_to_qdict_filtered().

Replace these uses by qobject_input_visitor_new_flat_confused() for
robustness.  This adds crumpling.  Right now, that's a no-op, but if
we ever extend these things in non-flat ways, crumpling will be
needed.

Signed-off-by: Markus Armbruster <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: eb0e0f7d3d4a9c585421d05b19ca71df5d69fc47
      
https://github.com/qemu/qemu/commit/eb0e0f7d3d4a9c585421d05b19ca71df5d69fc47
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qobject/block-qdict.c

  Log Message:
  -----------
  block-qdict: Simplify qdict_flatten_qdict()

There's no need to restart the loop.  We don't elsewhere, e.g. in
qdict_extract_subqdict(), qdict_join() and qemu_opts_absorb_qdict().
Simplify accordingly.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: f1b34a248e9785e8cc0d28a1685d2cf4460bb256
      
https://github.com/qemu/qemu/commit/f1b34a248e9785e8cc0d28a1685d2cf4460bb256
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qobject/block-qdict.c

  Log Message:
  -----------
  block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist()

qdict_flatten_qdict() skips copying scalars from @qdict to @target
when the two are the same.  Fair enough, but it uses a non-obvious
test for "same".  Replace it by the obvious one.  While there, improve
comments.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 3692b5d76819e573dedc9004c4b2b0e3dad83530
      
https://github.com/qemu/qemu/commit/3692b5d76819e573dedc9004c4b2b0e3dad83530
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qobject/block-qdict.c

  Log Message:
  -----------
  block-qdict: Clean up qdict_crumple() a bit

When you mix scalar and non-scalar keys, whether you get an "already
set as scalar" or an "already set as dict" error depends on qdict
iteration order.  Neither message makes much sense.  Replace by
""Cannot mix scalar and non-scalar keys".  This is similar to the
message we get for mixing list and non-list keys.

I find qdict_crumple()'s first loop hard to understand.  Rearrange it
and add a comment.

Signed-off-by: Markus Armbruster <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c78b8cfbfd53737353dc94dfb99c57d72ce31ab5
      
https://github.com/qemu/qemu/commit/c78b8cfbfd53737353dc94dfb99c57d72ce31ab5
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qobject/block-qdict.c

  Log Message:
  -----------
  block-qdict: Simplify qdict_is_list() some

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: cddec036830ada5d5d45023bcfba09015b8ab394
      
https://github.com/qemu/qemu/commit/cddec036830ada5d5d45023bcfba09015b8ab394
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M tests/check-block-qdict.c

  Log Message:
  -----------
  check-block-qdict: Rename qdict_flatten()'s variables for clarity

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: bef96b1549907b005ce1fa1456d2a0910d2a1aa5
      
https://github.com/qemu/qemu/commit/bef96b1549907b005ce1fa1456d2a0910d2a1aa5
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M tests/check-block-qdict.c

  Log Message:
  -----------
  check-block-qdict: Cover flattening of empty lists and dictionaries

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2860b2b2cb883969c8f6464bd9f8bc88742c5c73
      
https://github.com/qemu/qemu/commit/2860b2b2cb883969c8f6464bd9f8bc88742c5c73
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M qobject/block-qdict.c
    M tests/check-block-qdict.c

  Log Message:
  -----------
  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 <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a3699de4dde82bc76b33a83798a9da82c2336cce
      
https://github.com/qemu/qemu/commit/a3699de4dde82bc76b33a83798a9da82c2336cce
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/rbd.c
    M qapi/block-core.json

  Log Message:
  -----------
  rbd: New parameter auth-client-required

Parameter auth-client-required lets you configure authentication
methods.  We tried to provide that in v2.9.0, but backed out due to
interface design doubts (commit 464444fcc16).

This commit is similar to what we backed out, but simpler: we use a
list of enumeration values instead of a list of objects with a member
of enumeration type.

Let's review our reasons for backing out the first try, as stated in
the commit message:

    * The implementation uses deprecated rados_conf_set() key
      "auth_supported".  No biggie.

Fixed: we use "auth-client-required".

    * The implementation makes -drive silently ignore invalid parameters
      "auth" and "auth-supported.*.X" where X isn't "auth".  Fixable (in
      fact I'm going to fix similar bugs around parameter server), so
      again no biggie.

That fix is commit 2836284db60.  This commit doesn't bring the bugs
back.

    * BlockdevOptionsRbd member @password-secret applies only to
      authentication method cephx.  Should it be a variant member of
      RbdAuthMethod?

We've had time to ponder, and we decided to stick to the way Ceph
configuration works: the key configured separately, and silently
ignored if the authentication method doesn't use it.

    * BlockdevOptionsRbd member @user could apply to both methods cephx
      and none, but I'm not sure it's actually used with none.  If it
      isn't, should it be a variant member of RbdAuthMethod?

Likewise.

    * The client offers a *set* of authentication methods, not a list.
      Should the methods be optional members of BlockdevOptionsRbd instead
      of members of list @auth-supported?  The latter begs the question
      what multiple entries for the same method mean.  Trivial question
      now that RbdAuthMethod contains nothing but @type, but less so when
      RbdAuthMethod acquires other members, such the ones discussed above.

Again, we decided to stick to the way Ceph configuration works, except
we make auth-client-required a list of enumeration values instead of a
string containing keywords separated by delimiters.

    * How BlockdevOptionsRbd member @auth-supported interacts with
      settings from a configuration file specified with @conf is
      undocumented.  I suspect it's untested, too.

Not actually true, the documentation for @conf says "Values in the
configuration file will be overridden by options specified via QAPI",
and we've tested this.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: d083f954a95d37b460df0c2fbfe46ad7eb207b10
      
https://github.com/qemu/qemu/commit/d083f954a95d37b460df0c2fbfe46ad7eb207b10
  Author: Markus Armbruster <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/rbd.c
    M qapi/block-core.json

  Log Message:
  -----------
  rbd: New parameter key-secret

Legacy -drive supports "password-secret" parameter that isn't
available with -blockdev / blockdev-add.  That's because we backed out
our first try to provide it there due to interface design doubts, in
commit 577d8c9a811, v2.9.0.

This is the second try.  It brings back the parameter, except it's
named "key-secret" now.

Let's review our reasons for backing out the first try, as stated in
the commit message:

    * BlockdevOptionsRbd member @password-secret isn't actually a
      password, it's a key generated by Ceph.

Addressed by the rename.

    * We're not sure where member @password-secret belongs (see the
      previous commit).

See previous commit.

    * How @password-secret interacts with settings from a configuration
      file specified with @conf is undocumented.

Not actually true, the documentation for @conf says "Values in the
configuration file will be overridden by options specified via QAPI",
and we've tested this.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a7aff6dd10b16b67e8b142d0c94c5d92c3fe88f6
      
https://github.com/qemu/qemu/commit/a7aff6dd10b16b67e8b142d0c94c5d92c3fe88f6
  Author: Kevin Wolf <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M blockdev.c
    M hmp-commands.hx
    M hw/block/block.c
    M include/sysemu/blockdev.h
    M qemu-doc.texi
    M qemu-options.hx
    M tests/hd-geo-test.c

  Log Message:
  -----------
  block: Remove deprecated -drive geometry options

The -drive options cyls, heads, secs and trans were deprecated in
QEMU 2.10. It's time to remove them.

hd-geo-test tested both the old version with geometry options in -drive
and the new one with -device. Therefore the code using -drive doesn't
have to be replaced there, we just need to remove the -drive test cases.
This in turn allows some simplification of the code.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>


  Commit: eae3bd1eb7c6b105d30ec06008b3bc3dfc5f45bb
      
https://github.com/qemu/qemu/commit/eae3bd1eb7c6b105d30ec06008b3bc3dfc5f45bb
  Author: Kevin Wolf <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M blockdev.c
    M device-hotplug.c
    M include/sysemu/blockdev.h
    M qemu-doc.texi
    M qemu-options.hx

  Log Message:
  -----------
  block: Remove deprecated -drive option addr

The -drive option addr was deprecated in QEMU 2.10. It's time to remove
it.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>


  Commit: b0083267444a5e0f28391f6c2831a539f878d424
      
https://github.com/qemu/qemu/commit/b0083267444a5e0f28391f6c2831a539f878d424
  Author: Kevin Wolf <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M block/block-backend.c
    M blockdev.c
    M hw/block/block.c
    M hw/block/nvme.c
    M hw/block/virtio-blk.c
    M hw/ide/qdev.c
    M hw/scsi/scsi-disk.c
    M hw/usb/dev-storage.c
    M include/hw/block/block.h
    M include/sysemu/blockdev.h
    M qemu-doc.texi
    M qemu-options.hx
    M tests/ahci-test.c
    M tests/ide-test.c

  Log Message:
  -----------
  block: Remove deprecated -drive option serial

The -drive option serial was deprecated in QEMU 2.10. It's time to
remove it.

Tests need to be updated to set the serial number with -global instead
of using the -drive option.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Reviewed-by: Jeff Cody <address@hidden>


  Commit: 6266e900b8083945cb766b45c124fb3c42932cb3
      
https://github.com/qemu/qemu/commit/6266e900b8083945cb766b45c124fb3c42932cb3
  Author: Kevin Wolf <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  block: Remove dead deprecation warning code

We removed all options from the 'deprecated' array, so the code is dead
and can be removed as well.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>


  Commit: 4359255ad39fdf116f0cf70a77ef5330c217e4da
      
https://github.com/qemu/qemu/commit/4359255ad39fdf116f0cf70a77ef5330c217e4da
  Author: Peter Maydell <address@hidden>
  Date:   2018-06-15 (Fri, 15 Jun 2018)

  Changed paths:
    M MAINTAINERS
    M block.c
    M block/block-backend.c
    M block/crypto.c
    M block/gluster.c
    M block/iscsi.c
    M block/nbd.c
    M block/nfs.c
    M block/parallels.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/quorum.c
    M block/rbd.c
    M block/sheepdog.c
    M block/snapshot.c
    M block/ssh.c
    M block/vdi.c
    M block/vhdx.c
    M block/vpc.c
    M block/vvfat.c
    M block/vxhs.c
    M blockdev.c
    M device-hotplug.c
    M hmp-commands.hx
    M hw/block/block.c
    M hw/block/nvme.c
    M hw/block/virtio-blk.c
    M hw/ide/qdev.c
    M hw/scsi/scsi-disk.c
    M hw/usb/dev-storage.c
    A include/block/qdict.h
    M include/hw/block/block.h
    M include/qapi/qmp/qdict.h
    M include/sysemu/blockdev.h
    M qapi/block-core.json
    M qapi/job.json
    M qemu-doc.texi
    M qemu-img.c
    M qemu-options.hx
    M qobject/Makefile.objs
    A qobject/block-qdict.c
    M qobject/qdict.c
    M tests/Makefile.include
    M tests/ahci-test.c
    A tests/check-block-qdict.c
    M tests/check-qdict.c
    M tests/check-qobject.c
    M tests/hd-geo-test.c
    M tests/ide-test.c
    A tests/qemu-iotests/221
    A tests/qemu-iotests/221.out
    M tests/qemu-iotests/group
    M tests/test-replication.c
    M util/qemu-config.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging

Block layer patches:

- Fix options that work only with -drive or -blockdev, but not with
  both, because of QDict type confusion
- rbd: Add options 'auth-client-required' and 'key-secret'
- Remove deprecated -drive options serial/addr/cyls/heads/secs/trans
- rbd, iscsi: Remove deprecated 'filename' option
- Fix 'qemu-img map' crash with unaligned image size
- Improve QMP documentation for jobs

# gpg: Signature made Fri 15 Jun 2018 15:20:03 BST
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <address@hidden>"
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream: (26 commits)
  block: Remove dead deprecation warning code
  block: Remove deprecated -drive option serial
  block: Remove deprecated -drive option addr
  block: Remove deprecated -drive geometry options
  rbd: New parameter key-secret
  rbd: New parameter auth-client-required
  block: Fix -blockdev / blockdev-add for empty objects and arrays
  check-block-qdict: Cover flattening of empty lists and dictionaries
  check-block-qdict: Rename qdict_flatten()'s variables for clarity
  block-qdict: Simplify qdict_is_list() some
  block-qdict: Clean up qdict_crumple() a bit
  block-qdict: Tweak qdict_flatten_qdict(), qdict_flatten_qlist()
  block-qdict: Simplify qdict_flatten_qdict()
  block: Make remaining uses of qobject input visitor more robust
  block: Factor out qobject_input_visitor_new_flat_confused()
  block: Clean up a misuse of qobject_to() in .bdrv_co_create_opts()
  block: Fix -drive for certain non-string scalars
  block: Fix -blockdev for certain non-string scalars
  qobject: Move block-specific qdict code to block-qdict.c
  block: Add block-specific QDict header
  ...

Signed-off-by: Peter Maydell <address@hidden>


Compare: https://github.com/qemu/qemu/compare/81d386479640...4359255ad39f
      **NOTE:** This service been marked for deprecation: 
https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]