qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 03283d: MAINTAINERS: Replace myself with John


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] 03283d: MAINTAINERS: Replace myself with John Snow for blo...
Date: Thu, 28 Feb 2019 01:42:41 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 03283d643310dd311068b134a7a8d138ffec5e43
      
https://github.com/qemu/qemu/commit/03283d643310dd311068b134a7a8d138ffec5e43
  Author: Jeff Cody <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Replace myself with John Snow for block jobs

I'll not be involved with day-to-day qemu development, and John
Snow is a block jobs wizard.  Have him take over block job
maintainership duties.

Signed-off-by: Jeff Cody <address@hidden>
Acked-by: John Snow <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 5f5246b6b050b1168b7aa5a11b85b9be331108f7
      
https://github.com/qemu/qemu/commit/5f5246b6b050b1168b7aa5a11b85b9be331108f7
  Author: Jeff Cody <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Remove myself as block maintainer

I'll not be involved in day-to-day qemu development.  Remove myself as
maintainer from the remainder of the network block drivers, and revert
them to the general block layer maintainership.

Move 'sheepdog' to the 'Odd Fixes' support level.

For VHDX, added my personal email address as a maintainer, as I can
answer questions or send the occassional bug fix.  Leaving it as
'Supported', instead of 'Odd Fixes', because I think the rest of the
block layer maintainers and developers will upkeep it as well, if
needed.

Signed-off-by: Jeff Cody <address@hidden>
Acked-by: Max Reitz <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 6ca080453ea403959ccde661030ca16264acc181
      
https://github.com/qemu/qemu/commit/6ca080453ea403959ccde661030ca16264acc181
  Author: Daniel Henrique Barboza <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/snapshot.c
    M hmp-commands.hx

  Log Message:
  -----------
  block/snapshot.c: eliminate use of ID input in snapshot operations

At this moment, QEMU attempts to create/load/delete snapshots
by using either an ID (id_str) or a name. The problem is that the code
isn't consistent of whether the entered argument is an ID or a name,
causing unexpected behaviors.

For example, when creating snapshots via savevm <arg>, what happens is that
"arg" is treated as both name and id_str. In a guest without snapshots, create
a single snapshot via savevm:

(qemu) savevm 0
(qemu) info snapshots
List of snapshots present on all disks:
ID        TAG                 VM SIZE                DATE       VM CLOCK
--        0                      741M 2018-07-31 13:39:56   00:41:25.313

A snapshot with name "0" is created. ID is hidden from the user, but the
ID is a non-zero integer that starts at "1". Thus, this snapshot has
id_str=1, TAG="0". Creating a second snapshot with arg = 1, the first one
is deleted:

(qemu) savevm 1
(qemu) info snapshots
List of snapshots present on all disks:
ID        TAG                 VM SIZE                DATE       VM CLOCK
--        1                      741M 2018-07-31 13:42:14   00:41:55.252

What happened?

- when creating the second snapshot, a verification is done inside
bdrv_all_delete_snapshot to delete any existing snapshots that matches an
string argument. Here, the code calls bdrv_all_delete_snapshot("1", ...);

- bdrv_all_delete_snapshot calls bdrv_snapshot_find(..., "1") for each
BlockDriverState of the guest. And this is where things goes tilting:
bdrv_snapshot_find does a search by both id_str and name. It finds
out that there is a snapshot that has id_str = 1, stores a reference
to the snapshot in the sn_info pointer and then returns match found;

- since a match was found, a call to bdrv_snapshot_delete_by_id_or_name() is
made. This function ignores the pointer written by bdrv_snapshot_find. Instead,
it deletes the snapshot using bdrv_snapshot_delete() calling it first with
id_str = 1. If it fails to delete, then it calls it again with name = 1.

- after all that, QEMU creates the new snapshot, that has id_str = 1 and
name = 1. The user is left wondering that happened with the first snapshot
created. Similar bugs can be triggered when using loadvm and delvm.

Before contemplating discarding the use of ID input in these operations,
I've searched the code of what would be the implications. My findings
are:

- the RBD and Sheepdog drivers don't care. Both uses the 'name' field as
key in their logic, making id_str = name when appropriate.
replay-snapshot.c does not make any special use of id_str;

- qcow2 uses id_str as an unique identifier but it is automatically
calculated, not being influenced by user input. Other than that, there are
no distinguish operations made only with id_str;

- in blockdev.c, the delete operation uses a match of both id_str AND
name. Given that id_str is either a copy of 'name' or auto-generated,
we're fine here.

This gives motivation to not consider ID as a valid user input in HMP
commands - sticking with 'name' input only is more consistent. To
accomplish that, the following changes were made in this patch:

- bdrv_snapshot_find() does not match for id_str anymore, only 'name'. The
function is called in save_snapshot(), load_snapshot(), 
bdrv_all_delete_snapshot()
and bdrv_all_find_snapshot(). This change makes the search function more
predictable and does not change the behavior of any underlying code that uses
these affected functions, which are related to HMP (which is fine) and the
main loop inside vl.c (which doesn't care about it anyways);

- bdrv_all_delete_snapshot() does not call bdrv_snapshot_delete_by_id_or_name
anymore. Instead, it uses the pointer returned by bdrv_snapshot_find to
erase the snapshot with the exact match of id_str an name. This function
is called in save_snapshot and hmp_delvm, thus this change  produces the
intended effect;

- documentation changes to reflect the new behavior. I consider this to
be an API fix instead of an API change - the user was already creating
snapshots using 'name', but now he/she will also enjoy a consistent
behavior.

Ideally we would get rid of the id_str field entirely, but this would have
repercussions on existing snapshots. Another day perhaps.

Signed-off-by: Daniel Henrique Barboza <address@hidden>
Acked-by: Dr. David Alan Gilbert <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 8c04093c8ce13fb67122b4ecedaa9857dc8ada98
      
https://github.com/qemu/qemu/commit/8c04093c8ce13fb67122b4ecedaa9857dc8ada98
  Author: Daniel Henrique Barboza <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/snapshot.c
    M include/block/snapshot.h
    M qemu-img.c

  Log Message:
  -----------
  block/snapshot: remove bdrv_snapshot_delete_by_id_or_name

After the previous patch, the only instance of this function left
is inside qemu-img.c.

qemu-img is using it inside the 'img_snapshot' function to delete
snapshots in the SNAPSHOT_DELETE case, based on a "snapshot_name"
string that refers to the tag, not ID, of the QEMUSnapshotInfo struct.
This can be verified by checking the SNAPSHOT_CREATE case that
comes shortly before SNAPSHOT_DELETE. In that case, the same
"snapshot_name" variable is being strcpy to the 'name' field
of the QEMUSnapshotInfo struct sn:

pstrcpy(sn.name, sizeof(sn.name), snapshot_name);

Based on that, it is unlikely that "snapshot_name" might contain
an "id" in SNAPSHOT_DELETE.

This patch changes SNAPSHOT_DELETE to use snapshot_find() and
snapshot_delete() instead of bdrv_snapshot_delete_by_id_or_name.
After that, there is no instances left of bdrv_snapshot_delete_by_id_or_name
in the code, so it is safe to remove it entirely.

Suggested-by: Murilo Opsfelder Araujo <address@hidden>
Signed-off-by: Daniel Henrique Barboza <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 161e612d20e6e9a228552e1539277b928003f421
      
https://github.com/qemu/qemu/commit/161e612d20e6e9a228552e1539277b928003f421
  Author: Daniel Henrique Barboza <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/qcow2-snapshot.c

  Log Message:
  -----------
  qcow2-snapshot: remove redundant find_snapshot_by_id_and_name call

In qcow2_snapshot_create there is the following code block:

    /* Generate an ID */
    find_new_snapshot_id(bs, sn_info->id_str, sizeof(sn_info->id_str));

    /* Check that the ID is unique */
    if (find_snapshot_by_id_and_name(bs, sn_info->id_str, NULL) >= 0) {
        return -EEXIST;
    }

find_new_snapshot_id cycles through all snapshots, getting the id_str
as an unsigned long int, calculating the max id_max value of all the
existing id_strs and writing in the id_str pointer id_max + 1:

    for(i = 0; i < s->nb_snapshots; i++) {
        sn = s->snapshots + i;
        id = strtoul(sn->id_str, NULL, 10);
        if (id > id_max)
            id_max = id;
    }
    snprintf(id_str, id_str_size, "%lu", id_max + 1);

Here, sn_info->id_str will have the unique value id_max + 1. Right
after that, find_snapshot_by_id_and_name is called with
id = sn_info->id_str and name = NULL. This will cause the function
to execute the following:

    } else if (id) {
        for (i = 0; i < s->nb_snapshots; i++) {
            if (!strcmp(s->snapshots[i].id_str, id)) {
                return i;
            }
        }
    }

In short, we're searching the existing snapshots to see if sn_info->id_str
matches any existing id, right after we set in the previous line a
sn_info->id_str value that is already unique.

The first code block goes way back to commit 585f8587ad, a 2006 commit from
Fabrice Bellard that simply says "new qcow2 disk image format". No more
info is provided about this logic in any subsequent commits that moved
this code block around.

I can't say about the original design, but the current logic is redundant.
bdrv_snapshot_create is called in aio_context lock, forbidding any
concurrent call to accidentally create a new snapshot between
the find_new_snapshot_id and find_snapshot_by_id_and_name calls. What
we're ending up doing is to cycle through the snapshots two times
for no viable reason.

This patch eliminates the redundancy by removing the 'id is unique'
check that calls find_snapshot_by_id_and_name.

Signed-off-by: Daniel Henrique Barboza <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 57830a499f7c815bb0cb325c94a3d8c910d13cfa
      
https://github.com/qemu/qemu/commit/57830a499f7c815bb0cb325c94a3d8c910d13cfa
  Author: Denis Plotnikov <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: don't set the same context

Adds a fast path on aio context setting preventing
unnecessary context setting routine.
Also, it prevents issues with cyclic walk of child
bds-es appeared because of registering aio walking
notifiers:

Call stack:

0  __GI_raise
1  __GI_abort
2  __assert_fail_base
3  __GI___assert_fail
4  bdrv_detach_aio_context (bs=0x55f54d65c000)      <<<
5  bdrv_detach_aio_context (bs=0x55f54fc8a800)
6  bdrv_set_aio_context (bs=0x55f54fc8a800, ...)
7  block_job_attached_aio_context
8  bdrv_attach_aio_context (bs=0x55f54d65c000, ...) <<<
9  bdrv_set_aio_context (bs=0x55f54d65c000)
10 blk_set_aio_context
11 virtio_blk_data_plane_stop
12 virtio_bus_stop_ioeventfd
13 virtio_vmstate_change
14 vm_state_notify (running=0, state=RUN_STATE_SHUTDOWN)
15 do_vm_stop (state=RUN_STATE_SHUTDOWN, send_stop=true)
16 vm_stop (state=RUN_STATE_SHUTDOWN)
17 main_loop_should_exit
18 main_loop
19 main

This can happen because of "new" context attachment to VM disk bds.
When attaching a new context the corresponding aio context handler is
called for each of aio_notifiers registered on the VM disk bds context.
Among those handlers, there is the block_job_attached_aio_context handler
which sets a new aio context for the block job bds. When doing so,
the old context is detached from all the block job bds children and one of
them is the VM disk bds, serving as backing store for the blockjob bds,
although the VM disk bds is actually the initializer of that process.
Since the VM disk bds is protected with walking_aio_notifiers flag
from double processing in recursive calls, the assert fires.

Signed-off-by: Denis Plotnikov <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2468eed3befde57ee5be090dd957b9cec220449e
      
https://github.com/qemu/qemu/commit/2468eed3befde57ee5be090dd957b9cec220449e
  Author: Alberto Garcia <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/commit.c

  Log Message:
  -----------
  commit: Replace commit_top_bs on failure after deleting the block job

If there's an error in commit_start() then the block job must be
deleted before replacing commit_top_bs, otherwise it will fail because
of lack of permissions. This happens since the permission system was
introduced in 8dfba2797761d8a43744e4e6571c8175e448a478.

Fortunately this bug doesn't seem to be possible to reproduce at the
moment without changing the code.

Signed-off-by: Alberto Garcia <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 334c43e2c342e878311c66b4e62343f0a7c2c6be
      
https://github.com/qemu/qemu/commit/334c43e2c342e878311c66b4e62343f0a7c2c6be
  Author: Daniel P. Berrangé <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M qemu-img.c

  Log Message:
  -----------
  qemu-img: fix error reporting for -object

Error reporting for user_creatable_add_opts_foreach was changed so that
it no longer called 'error_report_err' in:

  commit 7e1e0c11127bde81cff260fc6859690435c509d6
  Author: Markus Armbruster <address@hidden>
  Date:   Wed Oct 17 10:26:43 2018 +0200

    qom: Clean up error reporting in user_creatable_add_opts_foreach()

Some callers were updated to pass in "&error_fatal" but all the ones in
qemu-img were left passing NULL. As a result all errors went to
/dev/null instead of being reported to the user.

Signed-off-by: Daniel P. Berrangé <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Reviewed-by: Stefano Garzarella <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c90e2a9cfd94bd02d92c53b97f04fd595001de7e
      
https://github.com/qemu/qemu/commit/c90e2a9cfd94bd02d92c53b97f04fd595001de7e
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/block-backend.c
    M include/sysemu/block-backend.h

  Log Message:
  -----------
  block-backend: Make blk_inc/dec_in_flight public

For some users of BlockBackends, just increasing the in_flight counter
is easier than implementing separate handlers in BlockDevOps. Make the
helper functions for this public.

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


  Commit: 680f200217748e0920b79ec1d524717c2f50935b
      
https://github.com/qemu/qemu/commit/680f200217748e0920b79ec1d524717c2f50935b
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M hw/block/virtio-blk.c

  Log Message:
  -----------
  virtio-blk: Increase in_flight for request restart BH

virtio_blk_dma_restart_bh() submits new requests, so in order to make
sure that these requests are not started inside a drained section of the
attached BlockBackend, we need to make sure that draining the
BlockBackend waits for the BH to be executed.

This BH is still questionable because its scheduled in the main thread
instead of the configured iothread. Leave a FIXME comment for this.

But with this fix, enabling the data plane at least waits for these
requests (in bdrv_set_aio_context()) instead of changing the AioContext
under their feet and making them run in the wrong thread, causing
crashes and failures (e.g. due to missing locking).

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


  Commit: 5ad81b4946baf948c65cf7e1436d9b74803c1280
      
https://github.com/qemu/qemu/commit/5ad81b4946baf948c65cf7e1436d9b74803c1280
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nbd-client.c
    M block/nbd-client.h

  Log Message:
  -----------
  nbd: Restrict connection_co reentrance

nbd_client_attach_aio_context() schedules connection_co in the new
AioContext and this way reenters it in any arbitrary place that has
yielded. We can restrict this a bit to the function call where the
coroutine actually sits waiting when it's idle.

This doesn't solve any bug yet, but it shows where in the code we need
to support this random reentrance and where we don't have to care.

Add FIXME comments for the existing bugs that the rest of this series
will fix.

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


  Commit: 6886ceaf61c2399419258246a064485e9b1e51ac
      
https://github.com/qemu/qemu/commit/6886ceaf61c2399419258246a064485e9b1e51ac
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M include/io/channel.h
    M io/channel.c

  Log Message:
  -----------
  io: Make qio_channel_yield() interruptible

Similar to how qemu_co_sleep_ns() allows preemption from an external
coroutine entry, allow reentering qio_channel_yield() early.

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


  Commit: 2a239e6e03ee188f69f159bb5d8baf648a54c9c1
      
https://github.com/qemu/qemu/commit/2a239e6e03ee188f69f159bb5d8baf648a54c9c1
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M io/channel.c

  Log Message:
  -----------
  io: Remove redundant read/write_coroutine assignments

qio_channel_yield() now updates ioc->read_write/coroutine and calls
qio_channel_set_aio_fd_handlers(), so the code in the handlers has
become redundant and can be removed.

This does not make a difference in intermediate states because
aio_co_wake() really enters the coroutine immediately here: These
handlers are never run in coroutine context, and we're in the right
AioContext because qio_channel_attach_aio_context() asserts that the
handlers are inactive.

To make these conditions more obvious, assert the right AioContext.

Suggested-by: Paolo Bonzini <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a7b78fc944b20b953d68426b7db2c81fc6a5b5af
      
https://github.com/qemu/qemu/commit/a7b78fc944b20b953d68426b7db2c81fc6a5b5af
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M include/block/nbd.h
    M nbd/client.c
    M nbd/nbd-internal.h

  Log Message:
  -----------
  nbd: Move nbd_read_eof() to nbd/client.c

The only caller of nbd_read_eof() is nbd_receive_reply(), so it doesn't
have to live in the header file, but can move next to its caller.

Also add the missing coroutine_fn to the function and its caller.

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


  Commit: d3bd5b90890f6715bcee38e00745112157dfbe59
      
https://github.com/qemu/qemu/commit/d3bd5b90890f6715bcee38e00745112157dfbe59
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nbd-client.c
    M include/block/nbd.h
    M nbd/client.c

  Log Message:
  -----------
  nbd: Use low-level QIOChannel API in nbd_read_eof()

Instead of using the convenience wrapper qio_channel_read_all_eof(), use
the lower level QIOChannel API. This means duplicating some code, but
we'll need this because this coroutine yield is special: We want it to
be interruptible so that nbd_client_attach_aio_context() can correctly
reenter the coroutine.

This moves the bdrv_dec/inc_in_flight() pair into nbd_read_eof(), so
that connection_co will always sit in this exact qio_channel_yield()
call when bdrv_drain() returns.

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


  Commit: 28e0b2d2e13ef7c4dd645b1fd393f52009469803
      
https://github.com/qemu/qemu/commit/28e0b2d2e13ef7c4dd645b1fd393f52009469803
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nbd-client.c

  Log Message:
  -----------
  nbd: Increase bs->in_flight during AioContext switch

bdrv_drain() must not leave connection_co scheduled, so bs->in_flight
needs to be increased while the coroutine is waiting to be scheduled
in the new AioContext after nbd_client_attach_aio_context().

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


  Commit: 6c75d761d0a6d8b235140dd97493006a0cd61af4
      
https://github.com/qemu/qemu/commit/6c75d761d0a6d8b235140dd97493006a0cd61af4
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Don't poll in bdrv_set_aio_context()

The explicit aio_poll() call in bdrv_set_aio_context() was added in
commit c2b6428d388 as a workaround for bdrv_drain() failing to achieve
to actually quiesce everything (specifically the NBD client code to
switch AioContext).

Now that the NBD client has been fixed to complete this operation during
bdrv_drain(), we don't need the workaround any more.

It was wrong anyway: aio_poll() must always be run in the home thread of
the AioContext.

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


  Commit: e64f25f30b80a71bd4e409ed518c39eeb5905166
      
https://github.com/qemu/qemu/commit/e64f25f30b80a71bd4e409ed518c39eeb5905166
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Fix AioContext switch for drained node

When a drained node changes its AioContext, we need to move its
aio_disable_external() to the new context, too.

Without this fix, drain_end will try to reenable the new context, which
has never been disabled, so an assertion failure is triggered.

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


  Commit: 247d2737715833525725d27e5cecf5840c62f900
      
https://github.com/qemu/qemu/commit/247d2737715833525725d27e5cecf5840c62f900
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/test-bdrv-drain.c

  Log Message:
  -----------
  test-bdrv-drain: AioContext switch in drained section

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


  Commit: d70d595429ecd9ac4917e53453dd8979db8e5ffd
      
https://github.com/qemu/qemu/commit/d70d595429ecd9ac4917e53453dd8979db8e5ffd
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Use normal drain for bdrv_set_aio_context()

Now that bdrv_set_aio_context() works inside drained sections, it can
also use the real drain function instead of open coding something
similar.

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


  Commit: 0dc165c1bd544cad4b58f9493d3f6f71fd41705e
      
https://github.com/qemu/qemu/commit/0dc165c1bd544cad4b58f9493d3f6f71fd41705e
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M util/aio-posix.c

  Log Message:
  -----------
  aio-posix: Assert that aio_poll() is always called in home thread

aio_poll() has an existing assertion that the function is only called
from the AioContext's home thread if blocking is allowed.

This is not enough, some handlers make assumptions about the thread they
run in. Extend the assertion to non-blocking calls, too.

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


  Commit: 2f30b7c377fa9a7dfbaf6eed56a07be7953e509e
      
https://github.com/qemu/qemu/commit/2f30b7c377fa9a7dfbaf6eed56a07be7953e509e
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: improve should_update_child

As it already said in the comment, we don't want to create loops in
parent->child relations. So, when we try to append @to to @c, we should
check that @c is not in @to children subtree, and we should check it
recursively, not only the first level. The patch provides BFS-based
search, to check the relations.

This is needed for further fleecing-hook filter usage: we need to
append it to source, when the hook is already a parent of target, and
source may be in a backing chain of target (fleecing-scheme). So, on
appending, the hook should not became a child (direct or through
children subtree) of the target.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: f962e96150e9c6a41e26caeaf93a65ec5b755607
      
https://github.com/qemu/qemu/commit/f962e96150e9c6a41e26caeaf93a65ec5b755607
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M include/block/block_int.h

  Log Message:
  -----------
  block: fix bdrv_check_perm for non-tree subgraph

bdrv_check_perm in it's recursion checks each node in context of new
permissions for one parent, because of nature of DFS. It works well,
while children subgraph of top-most updated node is a tree, i.e. it
doesn't have any kind of loops. But if we have a loop (not oriented,
of course), i.e. we have two different ways from top-node to some
child-node, then bdrv_check_perm will do wrong thing:

  top
  | \
  |  |
  v  v
  A  B
  |  |
  v  v
  node

It will once check new permissions of node in context of new A
permissions and old B permissions and once visa-versa. It's a wrong way
and may lead to corruption of permission system. We may start with
no-permissions and all-shared for both A->node and B->node relations
and finish up with non shared write permission for both ways.

The following commit will add a test, which shows this bug.

To fix this situation, let's really set BdrvChild permissions during
bdrv_check_perm procedure. And we are happy here, as check-perm is
already written in transaction manner, so we just need to restore
backed-up permissions in _abort.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 2dbfadf60654ea5eecd5df77babaa92831954a98
      
https://github.com/qemu/qemu/commit/2dbfadf60654ea5eecd5df77babaa92831954a98
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/Makefile.include
    A tests/test-bdrv-graph-mod.c

  Log Message:
  -----------
  tests: add test-bdrv-graph-mod

Add two tests of node graph modification.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: c1c43990846b89d740487d7022dce9415453f344
      
https://github.com/qemu/qemu/commit/c1c43990846b89d740487d7022dce9415453f344
  Author: Alberto Garcia <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/qcow2-cluster.c

  Log Message:
  -----------
  qcow2: Assert that L2 table offsets fit in the L1 table

L1 table entries have a field to store the offset of an L2 table.
The rest of the bits of the entry are currently reserved except from
bit 63, which stores the COPIED flag.

The offset is always taken from the entry using L1E_OFFSET_MASK to
ensure that we only use the bits that belong to that field.

While that mask is used every time we read from the L1 table, it is
never used when we write to it. Due to the limits set elsewhere in the
code QEMU can never produce L2 table offsets that don't fit in that
field so any such offset when allocating an L2 table would indicate a
bug in QEMU.

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


  Commit: 83c68e149a9365a3db6de751f219ad1d79928462
      
https://github.com/qemu/qemu/commit/83c68e149a9365a3db6de751f219ad1d79928462
  Author: Thomas Huth <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nvme.c

  Log Message:
  -----------
  block/nvme: Remove QEMU_PACKED from naturally aligned NVMeRegs struct

The QEMU_PACKED is causing a compiler warning/error with GCC 9:

  CC      block/nvme.o
block/nvme.c: In function ‘nvme_create_queue_pair’:
block/nvme.c:209:22: error: taking address of packed member of
 ‘struct <anonymous>’ may result in an unaligned pointer value
 [-Werror=address-of-packed-member]
  209 |     q->sq.doorbell = &s->regs->doorbells[idx * 2 * s->doorbell_scale];

All members of the struct are naturally aligned, so there should
not be the need for QEMU_PACKED here, and the following QEMU_BUILD_BUG_ON
also ensures that there is no padding. Thus simply remove the QEMU_PACKED
here.

Buglink: https://bugs.launchpad.net/qemu/+bug/1817525
Reported-by: Satheesh Rajendran <address@hidden>
Signed-off-by: Thomas Huth <address@hidden>
Reviewed-by: Peter Maydell <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: f30c66ba6e417a07e68ad6e0bc5da27561a3beea
      
https://github.com/qemu/qemu/commit/f30c66ba6e417a07e68ad6e0bc5da27561a3beea
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/qapi.c
    M block/raw-format.c
    M block/replication.c
    M block/vhdx-log.c
    M block/vmdk.c
    M blockdev.c
    M include/block/block.h
    M qemu-img.c

  Log Message:
  -----------
  block: Use bdrv_refresh_filename() to pull

Before this patch, bdrv_refresh_filename() is used in a pushing manner:
Whenever the BDS graph is modified, the parents of the modified edges
are supposed to be updated (recursively upwards).  However, that is
nonviable, considering that we want child changes not to concern
parents.

Also, in the long run we want a pull model anyway: Here, we would have a
bdrv_filename() function which returns a BDS's filename, freshly
constructed.

This patch is an intermediate step.  It adds bdrv_refresh_filename()
calls before every place a BDS.filename value is used.  The only
exceptions are protocol drivers that use their own filename, which
clearly would not profit from refreshing that filename before.

Also, bdrv_get_encrypted_filename() is removed along the way (as a user
of BDS.filename), since it is completely unused.

In turn, all of the calls to bdrv_refresh_filename() before this patch
are removed, because we no longer have to call this function on graph
changes.

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Max Reitz <address@hidden>


  Commit: e24518e303e6a4372eba67a8bd3c8730a02b86f0
      
https://github.com/qemu/qemu/commit/e24518e303e6a4372eba67a8bd3c8730a02b86f0
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/commit.c
    M block/mirror.c
    M block/quorum.c

  Log Message:
  -----------
  block: Use children list in bdrv_refresh_filename

bdrv_refresh_filename() should invoke itself recursively on all
children, not just on file.

With that change, we can remove the manual invocations in blkverify,
quorum, commit, mirror, and blklogwrites.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: bb808d5f5c0978828a974d547e6032402c339555
      
https://github.com/qemu/qemu/commit/bb808d5f5c0978828a974d547e6032402c339555
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Skip implicit nodes for filename info

bdrv_refresh_filename() should simply skip all implicit nodes.  They are
supposed to be invisible to the user, so they should not appear in
filename information.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 998c201923a5e082f362566d234dfd6057e4a19a
      
https://github.com/qemu/qemu/commit/998c201923a5e082f362566d234dfd6057e4a19a
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/vmdk.c
    M include/block/block_int.h

  Log Message:
  -----------
  block: Add BDS.auto_backing_file

If the backing file is overridden, this most probably does change the
guest-visible data of a BDS.  Therefore, we will need to consider this
in bdrv_refresh_filename().

To see whether it has been overridden, we might want to compare
bs->backing_file and bs->backing->bs->filename.  However,
bs->backing_file is changed by bdrv_set_backing_hd() (which is just used
to change the backing child at runtime, without modifying the image
header), so bs->backing_file most of the time simply contains a copy of
bs->backing->bs->filename anyway, so it is useless for such a
comparison.

This patch adds an auto_backing_file BDS field which contains the
backing file path as indicated by the image header, which is not changed
by bdrv_set_backing_hd().

Because of bdrv_refresh_filename() magic, however, a BDS's filename may
differ from what has been specified during bdrv_open().  Then, the
comparison between bs->auto_backing_file and bs->backing->bs->filename
may fail even though bs->backing was opened from bs->auto_backing_file.
To mitigate this, we can copy the real BDS's filename (after the whole
bdrv_open() and bdrv_refresh_filename() process) into
bs->auto_backing_file, if we know the former has been opened based on
the latter.  This is only possible if no options modifying the backing
file's behavior have been specified, though.  To simplify things, this
patch only copies the filename from the backing file if no options have
been specified for it at all.

Furthermore, there are cases where an overlay is created by qemu which
already contains a BDS's filename (e.g. in blockdev-snapshot-sync).  We
do not need to worry about updating the overlay's bs->auto_backing_file
there, because we actually wrote a post-bdrv_refresh_filename() filename
into the image header.

So all in all, there will be false negatives where (as of a future
patch) bdrv_refresh_filename() will assume that the backing file differs
from what was specified in the image header, even though it really does
not.  However, these cases should be limited to where (1) the user
actually did override something in the backing chain (e.g. by specifying
options for the backing file), or (2) the user executed a QMP command to
change some node's backing file (e.g. change-backing-file or
block-commit with @backing-file given) where the given filename does not
happen to coincide with qemu's idea of the backing BDS's filename.

Then again, (1) really is limited to -drive.  With -blockdev or
blockdev-add, you have to adhere to the schema, so a user cannot give
partial "unimportant" options (e.g. by just setting backing.node-name
and leaving the rest to the image header).  Therefore, trying to fix
this would mean trying to fix something for -drive only.

To improve on (2), we would need a full infrastructure to "canonicalize"
an arbitrary filename (+ options), so it can be compared against
another.  That seems a bit over the top, considering that filenames
nowadays are there mostly for the user's entertainment.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 909936234c38d92921f055f8cf19a7dca1bd9aa1
      
https://github.com/qemu/qemu/commit/909936234c38d92921f055f8cf19a7dca1bd9aa1
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M tests/qemu-iotests/051.out
    M tests/qemu-iotests/051.pc.out

  Log Message:
  -----------
  block: Respect backing bs in bdrv_refresh_filename

Basically, bdrv_refresh_filename() should respect all children of a
BlockDriverState. However, generally those children are driver-specific,
so this function cannot handle the general case. On the other hand,
there are only few drivers which use other children than @file and
@backing (that being vmdk, quorum, and blkverify).

Most block drivers only use @file and/or @backing (if they use any
children at all). Both can be implemented directly in
bdrv_refresh_filename.

The user overriding the file's filename is already handled, however, the
user overriding the backing file is not. If this is done, opening the
BDS with the plain filename of its file will not be correct, so we may
not set bs->exact_filename in that case.

iotest 051 contains test cases for overriding the backing file, and so
its output changes with this patch applied.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: f2ea0b2082ef2783abb5dfef0e8cab3d41ac6d5f
      
https://github.com/qemu/qemu/commit/f2ea0b2082ef2783abb5dfef0e8cab3d41ac6d5f
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests.py: Add filter_imgfmt()

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Max Reitz <address@hidden>


  Commit: ef7afd63997d2928bcda9230b36c8fb6b08266bd
      
https://github.com/qemu/qemu/commit/ef7afd63997d2928bcda9230b36c8fb6b08266bd
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests.py: Add node_info()

This function queries a node; since we cannot do that right now, it
executes query-named-block-nodes and returns the matching node's object.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 0f62cd8204163ba082056094a0bcb693faf67bf6
      
https://github.com/qemu/qemu/commit/0f62cd8204163ba082056094a0bcb693faf67bf6
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

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

  Log Message:
  -----------
  iotests: Add test for backing file overrides

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 009b03aaa233ccf5bd3014404995540158d7dc93
      
https://github.com/qemu/qemu/commit/009b03aaa233ccf5bd3014404995540158d7dc93
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/vmdk.c
    M include/block/block.h

  Log Message:
  -----------
  block: Make path_combine() return the path

Besides being safe for arbitrary path lengths, after some follow-up
patches all callers will want a freshly allocated buffer anyway.

In the meantime, path_combine_deprecated() is added which has the same
interface as path_combine() had before this patch. All callers to that
function will be converted in follow-up patches.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 645ae7d88e5393a2a67ebe325f4456ecd49e33e5
      
https://github.com/qemu/qemu/commit/645ae7d88e5393a2a67ebe325f4456ecd49e33e5
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/vmdk.c
    M include/block/block.h
    M qemu-img.c

  Log Message:
  -----------
  block: bdrv_get_full_backing_filename_from_...'s ret. val.

Make bdrv_get_full_backing_filename_from_filename() return an allocated
string instead of placing the result in a caller-provided buffer.

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 6b6833c1b4d11d7d838bce34ed4a2d7c42855efe
      
https://github.com/qemu/qemu/commit/6b6833c1b4d11d7d838bce34ed4a2d7c42855efe
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/qapi.c
    M include/block/block.h

  Log Message:
  -----------
  block: bdrv_get_full_backing_filename's ret. val.

Make bdrv_get_full_backing_filename() return an allocated string instead
of placing the result in a caller-provided buffer.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 9f4793d8f2f1abf20dc1d7d55f65ce8df081ca7a
      
https://github.com/qemu/qemu/commit/9f4793d8f2f1abf20dc1d7d55f65ce8df081ca7a
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Add bdrv_make_absolute_filename()

This is a general function for making a filename that is relative to a
certain BDS absolute.

It calls bdrv_get_full_backing_filename_from_filename() for now, but
that will be changed in a follow-up patch.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 2d9158ce79f8d9ca45c74bc496b483e95b4a398c
      
https://github.com/qemu/qemu/commit/2d9158ce79f8d9ca45c74bc496b483e95b4a398c
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Fix bdrv_find_backing_image()

bdrv_find_backing_image() should use bdrv_get_full_backing_filename() or
bdrv_make_absolute_filename() instead of trying to do what those
functions do by itself.

path_combine_deprecated() can now be dropped, so let's do that.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 1e89d0f9bed7e95278d151cf6308cafbba8dae9f
      
https://github.com/qemu/qemu/commit/1e89d0f9bed7e95278d151cf6308cafbba8dae9f
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M include/block/block.h
    M include/block/block_int.h

  Log Message:
  -----------
  block: Add bdrv_dirname()

This function may be implemented by block drivers to derive a directory
name from a BDS. Concatenating this g_free()-able string with a relative
filename must result in a valid (not necessarily existing) filename, so
this is a function that should generally be not implemented by format
drivers, because this is protocol-specific.

If a BDS's driver does not implement this function, bdrv_dirname() will
fall through to the BDS's file if it exists. If it does not, the
exact_filename field will be used to generate a directory name.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 27953572a51f44de6cc1987300fab5d56e338ba0
      
https://github.com/qemu/qemu/commit/27953572a51f44de6cc1987300fab5d56e338ba0
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/blkverify.c

  Log Message:
  -----------
  blkverify: Make bdrv_dirname() return NULL

blkverify's BDSs have a file BDS, but we do not want this to be
preferred over the raw node. There is no way to decide between the two
(and not really a reason to, either), so just return NULL in blkverify's
implementation of bdrv_dirname().

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: f3037bd2549f8cf6d4ab7dddcfda07e3d5bc48fb
      
https://github.com/qemu/qemu/commit/f3037bd2549f8cf6d4ab7dddcfda07e3d5bc48fb
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/quorum.c

  Log Message:
  -----------
  quorum: Make bdrv_dirname() return NULL

While the common implementation for bdrv_dirname() should return NULL
for quorum BDSs already (because they do not have a file node and their
exact_filename field should be empty), there is no reason not to make
that explicit.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8a6239c071e27f2780b27461279b4ec8ec1b8b26
      
https://github.com/qemu/qemu/commit/8a6239c071e27f2780b27461279b4ec8ec1b8b26
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nbd.c

  Log Message:
  -----------
  block/nbd: Make bdrv_dirname() return NULL

The generic bdrv_dirname() implementation would be able to generate some
form of directory name for many NBD nodes, but it would be always wrong.
Therefore, we have to explicitly make it an error (until NBD has some
form of specification for export paths, if it ever will).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 0dcbc54a950986c5fbba5b2619fc4a33f92cb348
      
https://github.com/qemu/qemu/commit/0dcbc54a950986c5fbba5b2619fc4a33f92cb348
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nfs.c

  Log Message:
  -----------
  block/nfs: Implement bdrv_dirname()

While the basic idea is obvious and could be handled by the default
bdrv_dirname() implementation, we cannot generate a directory name if
the gid or uid are set, so we have to explicitly return NULL in those
cases.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8df686165bacb8b2e6c0cae0cd29fd36b0f243ef
      
https://github.com/qemu/qemu/commit/8df686165bacb8b2e6c0cae0cd29fd36b0f243ef
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M tests/qemu-iotests/110
    M tests/qemu-iotests/110.out

  Log Message:
  -----------
  block: Use bdrv_dirname() for relative filenames

bdrv_get_full_backing_filename_from_filename() breaks down when it comes
to JSON filenames. Using bdrv_dirname() as the basis is better because
since we have BDS, we can descend through the BDS tree to the protocol
layer, which gives us a greater probability of finding a non-JSON name;
also, bdrv_dirname() is more correct as it allows block drivers to
override the generation of that directory name in a protocol-specific
way.

We still need to keep bdrv_get_full_backing_filename_from_filename(),
though, because it has valid callers which need it during image creation
when no BDS is available yet.

This makes a test case in qemu-iotest 110, which was supposed to fail,
work. That is actually good, but we need to change the reference output
(and the comment in 110) accordingly.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: c0625e80925302c449bb3f7a7ba6eb213da7c1e2
      
https://github.com/qemu/qemu/commit/c0625e80925302c449bb3f7a7ba6eb213da7c1e2
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/110
    M tests/qemu-iotests/110.out

  Log Message:
  -----------
  iotests: Add quorum case to test 110

Test 110 tests relative backing filenames for complex BDS trees.  Now
that the originally supposedly failing test passes, let us add a new
failing test: Quorum can never work automatically (without detecting
whether all child nodes have the same base directory, but that would be
rather inconsistent behavior).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 2654267cc163083f4fb9a6d719468d9dd1bea455
      
https://github.com/qemu/qemu/commit/2654267cc163083f4fb9a6d719468d9dd1bea455
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/blkdebug.c
    M block/blklogwrites.c
    M block/crypto.c
    M block/curl.c
    M block/gluster.c
    M block/iscsi.c
    M block/nbd.c
    M block/nfs.c
    M block/null.c
    M block/nvme.c
    M block/qcow.c
    M block/qcow2.c
    M block/quorum.c
    M block/raw-format.c
    M block/rbd.c
    M block/replication.c
    M block/sheepdog.c
    M block/ssh.c
    M block/throttle.c
    M block/vpc.c
    M block/vvfat.c
    M block/vxhs.c
    M include/block/block_int.h

  Log Message:
  -----------
  block: Add strong_runtime_opts to BlockDriver

This new field can be set by block drivers to list the runtime options
they accept that may influence the contents of the respective BDS. As of
a follow-up patch, this list will be used by the common
bdrv_refresh_filename() implementation to decide which options to put
into BDS.full_open_options (and consequently whether a JSON filename has
to be created), thus freeing the drivers of having to implement that
logic themselves.

Additionally, this patch adds the field to all of the block drivers that
need it and sets it accordingly.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: abc521a9aa470421dc9285cafe16ff64f3044ac5
      
https://github.com/qemu/qemu/commit/abc521a9aa470421dc9285cafe16ff64f3044ac5
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/quorum.c
    M block/vmdk.c
    M include/block/block_int.h

  Log Message:
  -----------
  block: Add BlockDriver.bdrv_gather_child_options

Some follow-up patches will rework the way bs->full_open_options is
refreshed in bdrv_refresh_filename(). The new implementation will remove
the need for the block drivers' bdrv_refresh_filename() implementations
to set bs->full_open_options; instead, it will be generic and use static
information from each block driver.

However, by implementing bdrv_gather_child_options(), block drivers will
still be able to override the way the full_open_options of their
children are incorporated into their own.

We need to implement this function for VMDK because we have to prevent
the generic implementation from gathering the options of all children:
It is not possible to specify options for the extents through the
runtime options.

For quorum, the child names that would be used by the generic
implementation and the ones that we actually (currently) want to use
differ. See quorum_gather_child_options() for more information.

Note that both of these are cases which are not ideal: In case of VMDK
it would probably be nice to be able to specify options for all extents.
In case of quorum, the current runtime option structure is simply broken
and needs to be fixed (but that is left for another patch).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 97e2f021f844383d85de526ce88667ca34ecd277
      
https://github.com/qemu/qemu/commit/97e2f021f844383d85de526ce88667ca34ecd277
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M tests/qemu-iotests/110.out
    M tests/qemu-iotests/228
    M tests/qemu-iotests/228.out

  Log Message:
  -----------
  block: Generically refresh runtime options

Instead of having every block driver which implements
bdrv_refresh_filename() copy all of the strong runtime options over to
bs->full_open_options, implement this process generically in
bdrv_refresh_filename().

This patch only adds this new generic implementation, it does not remove
the old functionality. This is done in a follow-up patch.

With this patch, some superfluous information (that should never have
been there) may be removed from some JSON filenames, as can be seen in
the change to iotests 110's and 228's reference outputs.

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 998b3a1e5a2dd23bf89a853e15fabdaa8d788a72
      
https://github.com/qemu/qemu/commit/998b3a1e5a2dd23bf89a853e15fabdaa8d788a72
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/blkdebug.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/commit.c
    M block/mirror.c
    M block/nbd.c
    M block/nfs.c
    M block/null.c
    M block/nvme.c
    M block/quorum.c
    M include/block/block_int.h
    M tests/qemu-iotests/228
    M tests/qemu-iotests/228.out

  Log Message:
  -----------
  block: Purify .bdrv_refresh_filename()

Currently, BlockDriver.bdrv_refresh_filename() is supposed to both
refresh the filename (BDS.exact_filename) and set BDS.full_open_options.
Now that we have generic code in the central bdrv_refresh_filename() for
creating BDS.full_open_options, we can drop the latter part from all
BlockDriver.bdrv_refresh_filename() implementations.

This also means that we can drop all of the existing default code for
this from the global bdrv_refresh_filename() itself.

Furthermore, we now have to call BlockDriver.bdrv_refresh_filename()
after having set BDS.full_open_options, because the block driver's
implementation should now be allowed to depend on BDS.full_open_options
being set correctly.

Finally, with this patch we can drop the @options parameter from
BlockDriver.bdrv_refresh_filename(); also, add a comment on this
function's purpose in block/block_int.h while touching its interface.

This completely obsoletes blklogwrite's implementation of
.bdrv_refresh_filename().

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: fb695c74aa43c9bdc67b3079cddec1cc8e1b913e
      
https://github.com/qemu/qemu/commit/fb695c74aa43c9bdc67b3079cddec1cc8e1b913e
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Do not copy exact_filename from format file

If a format BDS's file BDS is in turn a format BDS, we cannot simply use
the same filename, because when opening a BDS tree based on a filename
alone, qemu will create only one format node on top of one protocol node
(disregarding a potential backing file).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: cc61b0740f9b99942f18cc850eeffa302f4f328e
      
https://github.com/qemu/qemu/commit/cc61b0740f9b99942f18cc850eeffa302f4f328e
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/nvme.c

  Log Message:
  -----------
  block/nvme: Fix bdrv_refresh_filename()

Currently, nvme's bdrv_refresh_filename() is an exact copy of null's
implementation.  However, for null, "null-co://" and "null-aio://" are
indeed valid filenames -- for nvme, they are not, as a device address is
still required.

The correct implementation should generate a filename of the form
"nvme://[PCI address]/[namespace]" (as the comment above
nvme_parse_filename() describes).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 712b64e8f3736f60d1f4b3d7cfd776eea7c3deeb
      
https://github.com/qemu/qemu/commit/712b64e8f3736f60d1f4b3d7cfd776eea7c3deeb
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/curl.c

  Log Message:
  -----------
  block/curl: Harmonize option defaults

Both of the defaults we currently have in the curl driver are named
based on a slightly different schema, let's unify that and call both
CURL_BLOCK_OPT_${NAME}_DEFAULT.

While at it, we can add a macro for the third option for which a default
exists, namely "sslverify".

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 937c007b6e75ac341dd474f7e30482614a21190c
      
https://github.com/qemu/qemu/commit/937c007b6e75ac341dd474f7e30482614a21190c
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/curl.c

  Log Message:
  -----------
  block/curl: Implement bdrv_refresh_filename()

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 1e47cb7f52541a82148da37eb004a0c68be4b865
      
https://github.com/qemu/qemu/commit/1e47cb7f52541a82148da37eb004a0c68be4b865
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/null.c

  Log Message:
  -----------
  block/null: Generate filename even with latency-ns

While we cannot represent the latency-ns option in a filename, it is not
a strong option so not being able to should not stop us from generating
a filename nonetheless.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 62a01a27f7f67853553679201e8617ccd28e965b
      
https://github.com/qemu/qemu/commit/62a01a27f7f67853553679201e8617ccd28e965b
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: BDS options may lack the "driver" option

When BDSs are created by qemu itself (e.g. as filters in block jobs),
they may not have a "driver" option in their options QDict.  When
generating a json:{} filename, however, it must always be present.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Alberto Garcia <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 7b14f231495291019b6d72cc446fd404c7684e3d
      
https://github.com/qemu/qemu/commit/7b14f231495291019b6d72cc446fd404c7684e3d
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

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

  Log Message:
  -----------
  iotests: Test json:{} filenames of internal BDSs

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 250c04f554a4a148eb3772af255e6a60450293b0
      
https://github.com/qemu/qemu/commit/250c04f554a4a148eb3772af255e6a60450293b0
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/210
    M tests/qemu-iotests/211
    M tests/qemu-iotests/212
    M tests/qemu-iotests/213
    M tests/qemu-iotests/237

  Log Message:
  -----------
  iotests: Re-add filename filters

A previous commit removed the default filters for qmp_log with the
intention to make them explicit; but this happened only for test 206.
There are more tests (for more exotic image formats than qcow2) which
require the filename filter, though.

Note that 237 is still broken for Python 2.x, which is fixed in the next
commit.

Fixes: f8ca8609d8549def45b28e82ecac64adaeee9f12
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 10ba68d10ca820435028c9657cca59ef97ca402e
      
https://github.com/qemu/qemu/commit/10ba68d10ca820435028c9657cca59ef97ca402e
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/237

  Log Message:
  -----------
  iotests: Fix 237 for Python 2.x

math.ceil() returns an integer on Python 3.x, but a float on Python 2.x.
range() always needs integers, so we need an explicit conversion on 2.x
(which does not hurt on 3.x).

It is not quite clear whether we want to support Python 2.x for any
prolonged time, but this may as well be fixed along with the other
issues some iotests have right now.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8f4ed6983ab1bda264074ac98d32657b411223bc
      
https://github.com/qemu/qemu/commit/8f4ed6983ab1bda264074ac98d32657b411223bc
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/232

  Log Message:
  -----------
  iotests: Remove superfluous rm from 232

This test creates no such file.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: c48221aa91d9078b86e23b19484227dc35d71840
      
https://github.com/qemu/qemu/commit/c48221aa91d9078b86e23b19484227dc35d71840
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/232

  Log Message:
  -----------
  iotests: Fix 232 for LUKS

With IMGOPTSSYNTAX, $TEST_IMG is useless for this test (it only tests
the file-posix protocol driver).  Therefore, if $TEST_IMG_FILE is set,
use that instead.

Because this test requires the file protocol, $TEST_IMG_FILE will always
be set if $IMGOPTSSYNTAX is true.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 9ac10f2e2c93e647ba6830c7083310aa04f65021
      
https://github.com/qemu/qemu/commit/9ac10f2e2c93e647ba6830c7083310aa04f65021
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/207
    M tests/qemu-iotests/207.out

  Log Message:
  -----------
  iotests: Fix 207 to use QMP filters for qmp_log

Fixes: 08fcd6111e1949f456e1b232ebeeb0cc17019a92
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 011a576113000f9c90a8450ef9116cca8d6f2523
      
https://github.com/qemu/qemu/commit/011a576113000f9c90a8450ef9116cca8d6f2523
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests.py: Add is_str()

On Python 2.x, strings are not always unicode strings.  This function
checks whether a given value is a plain string, or a unicode string (if
there is a difference).

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 56a6e5d0ca61f746577ea6223bcabbf7d6c576af
      
https://github.com/qemu/qemu/commit/56a6e5d0ca61f746577ea6223bcabbf7d6c576af
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests.py: Filter filename in any string value

filter_qmp_testfiles() currently filters the filename only for specific
keys.  However, there are more keys that take filenames (such as
block-commit's @top and @base, or ssh's @path), and it does not make
sense to list them all here.  "$TEST_DIR/$PID-" should have enough
entropy not to appear anywhere randomly.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: ac3589dc463c18e6726be2831196c7755bec39d5
      
https://github.com/qemu/qemu/commit/ac3589dc463c18e6726be2831196c7755bec39d5
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/common.rc

  Log Message:
  -----------
  iotests: Filter SSH paths

8908b253c4ad5f8874c8d13abec169c696a5cd32 has implemented filtering of
remote paths for NFS, but forgot SSH.  This patch takes care of that.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: e35792b6fde67f6d6a302b39c1b4ea2c019fa439
      
https://github.com/qemu/qemu/commit/e35792b6fde67f6d6a302b39c1b4ea2c019fa439
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M scripts/qemu.py
    M tests/qemu-iotests/045

  Log Message:
  -----------
  iotests: Let 045 be run concurrently

Adding a telnet monitor for no real purpose on a fixed port is not so
great.  Just use a null monitor instead.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: John Snow <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8a57a4be8389073d8bdb5d5d22e50d6282a36df0
      
https://github.com/qemu/qemu/commit/8a57a4be8389073d8bdb5d5d22e50d6282a36df0
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/206.out
    M tests/qemu-iotests/207.out
    M tests/qemu-iotests/210.out
    M tests/qemu-iotests/211.out
    M tests/qemu-iotests/212.out
    M tests/qemu-iotests/213.out
    M tests/qemu-iotests/237.out
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests.py: s/_/-/g on keys in qmp_log()

This follows what qmp() does, so the output will correspond to the
actual QMP command.

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 61914f8906fabbae26372a576d9dd988c5e22b75
      
https://github.com/qemu/qemu/commit/61914f8906fabbae26372a576d9dd988c5e22b75
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/qcow2.c

  Log Message:
  -----------
  qcow2: include LUKS payload overhead in qemu-img measure

LUKS encryption reserves clusters for its own payload data.  The size of
this area must be included in the qemu-img measure calculation so that
we arrive at the correct minimum required image size.

(Ab)use the qcrypto_block_create() API to determine the payload
overhead.  We discard the payload data that qcrypto thinks will be
written to the image.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 0482098608b83b559bc1802e4c612051b51f6c4c
      
https://github.com/qemu/qemu/commit/0482098608b83b559bc1802e4c612051b51f6c4c
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/178
    M tests/qemu-iotests/178.out.qcow2

  Log Message:
  -----------
  iotests: add LUKS payload overhead to 178 qemu-img measure test

The previous patch includes the LUKS payload overhead into the qemu-img
measure calculation for qcow2.  Update qemu-iotests 178 to exercise this
new code path.

Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 26c9296c31bc5d0fab24379af0a1684b099067de
      
https://github.com/qemu/qemu/commit/26c9296c31bc5d0fab24379af0a1684b099067de
  Author: yuchenlin <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block/vmdk.c

  Log Message:
  -----------
  vmdk: false positive of compat6 with hwversion not set

In vmdk_co_create_opts, when it finds hw_version is undefined, it will
set it to 4, which misleading the compat6 and hwversion in
vmdk_co_do_create. Simply set hw_version to NULL after free, let
the logic in vmdk_co_do_create to decide the value of hw_version.

This bug can be reproduced by:

$ qemu-img convert -O vmdk -o subformat=streamOptimized,compat6
/home/yuchenlin/syno.qcow2 /home/yuchenlin/syno.vmdk

qemu-img: /home/yuchenlin/syno.vmdk: error while converting vmdk:
compat6 cannot be enabled with hwversion set

Signed-off-by: yuchenlin <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 6a4e88e17966a963ee818daab3d0c9fa6bf73903
      
https://github.com/qemu/qemu/commit/6a4e88e17966a963ee818daab3d0c9fa6bf73903
  Author: Max Reitz <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M tests/qemu-iotests/211
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  iotests: Skip 211 on insufficient memory

VDI keeps the whole bitmap in memory, and the maximum size (which is
tested here) is 2 GB.  This may not be available on all machines, and it
rarely is available when running a 32 bit build.

Fix this by making VM.run_job() return the error string if an error
occurred, and checking whether that contains "Could not allocate bmap"
in 211.  If so, the test is skipped.

Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Signed-off-by: Max Reitz <address@hidden>


  Commit: 1b967e9f348d48788a2ab481d45398b80ce71fa6
      
https://github.com/qemu/qemu/commit/1b967e9f348d48788a2ab481d45398b80ce71fa6
  Author: Kevin Wolf <address@hidden>
  Date:   2019-02-25 (Mon, 25 Feb 2019)

  Changed paths:
    M block.c
    M block/blkdebug.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/commit.c
    M block/crypto.c
    M block/curl.c
    M block/gluster.c
    M block/iscsi.c
    M block/mirror.c
    M block/nbd.c
    M block/nfs.c
    M block/null.c
    M block/nvme.c
    M block/qapi.c
    M block/qcow.c
    M block/qcow2.c
    M block/qed.c
    M block/quorum.c
    M block/raw-format.c
    M block/rbd.c
    M block/replication.c
    M block/sheepdog.c
    M block/ssh.c
    M block/throttle.c
    M block/vhdx-log.c
    M block/vmdk.c
    M block/vpc.c
    M block/vvfat.c
    M block/vxhs.c
    M blockdev.c
    M include/block/block.h
    M include/block/block_int.h
    M qemu-img.c
    M scripts/qemu.py
    M tests/qemu-iotests/045
    M tests/qemu-iotests/051.out
    M tests/qemu-iotests/051.pc.out
    M tests/qemu-iotests/110
    M tests/qemu-iotests/110.out
    M tests/qemu-iotests/178
    M tests/qemu-iotests/178.out.qcow2
    M tests/qemu-iotests/206.out
    M tests/qemu-iotests/207
    M tests/qemu-iotests/207.out
    M tests/qemu-iotests/210
    M tests/qemu-iotests/210.out
    M tests/qemu-iotests/211
    M tests/qemu-iotests/211.out
    M tests/qemu-iotests/212
    M tests/qemu-iotests/212.out
    M tests/qemu-iotests/213
    M tests/qemu-iotests/213.out
    A tests/qemu-iotests/224
    A tests/qemu-iotests/224.out
    A tests/qemu-iotests/228
    A tests/qemu-iotests/228.out
    M tests/qemu-iotests/232
    M tests/qemu-iotests/237
    M tests/qemu-iotests/237.out
    M tests/qemu-iotests/common.rc
    M tests/qemu-iotests/group
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  Merge remote-tracking branch 'mreitz/tags/pull-block-2019-02-25' into 
queue-block

Block patches:
- Fix various issues with bdrv_refresh_filename()
- Fix various iotests
- Include LUKS overhead in qemu-img measure for qcow2
- A fix for vmdk's image creation interface

# gpg: Signature made Mon Feb 25 15:13:43 2019 CET
# gpg:                using RSA key F407DB0061D5CF40
# gpg: Good signature from "Max Reitz <address@hidden>"
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* mreitz/tags/pull-block-2019-02-25: (45 commits)
  iotests: Skip 211 on insufficient memory
  vmdk: false positive of compat6 with hwversion not set
  iotests: add LUKS payload overhead to 178 qemu-img measure test
  qcow2: include LUKS payload overhead in qemu-img measure
  iotests.py: s/_/-/g on keys in qmp_log()
  iotests: Let 045 be run concurrently
  iotests: Filter SSH paths
  iotests.py: Filter filename in any string value
  iotests.py: Add is_str()
  iotests: Fix 207 to use QMP filters for qmp_log
  iotests: Fix 232 for LUKS
  iotests: Remove superfluous rm from 232
  iotests: Fix 237 for Python 2.x
  iotests: Re-add filename filters
  iotests: Test json:{} filenames of internal BDSs
  block: BDS options may lack the "driver" option
  block/null: Generate filename even with latency-ns
  block/curl: Implement bdrv_refresh_filename()
  block/curl: Harmonize option defaults
  block/nvme: Fix bdrv_refresh_filename()
  ...

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


  Commit: adf2e451f357e993f173ba9b4176dbf3e65fee7e
      
https://github.com/qemu/qemu/commit/adf2e451f357e993f173ba9b4176dbf3e65fee7e
  Author: Peter Maydell <address@hidden>
  Date:   2019-02-26 (Tue, 26 Feb 2019)

  Changed paths:
    M MAINTAINERS
    M block.c
    M block/blkdebug.c
    M block/blklogwrites.c
    M block/blkverify.c
    M block/block-backend.c
    M block/commit.c
    M block/crypto.c
    M block/curl.c
    M block/gluster.c
    M block/iscsi.c
    M block/mirror.c
    M block/nbd-client.c
    M block/nbd-client.h
    M block/nbd.c
    M block/nfs.c
    M block/null.c
    M block/nvme.c
    M block/qapi.c
    M block/qcow.c
    M block/qcow2-cluster.c
    M block/qcow2-snapshot.c
    M block/qcow2.c
    M block/qed.c
    M block/quorum.c
    M block/raw-format.c
    M block/rbd.c
    M block/replication.c
    M block/sheepdog.c
    M block/snapshot.c
    M block/ssh.c
    M block/throttle.c
    M block/vhdx-log.c
    M block/vmdk.c
    M block/vpc.c
    M block/vvfat.c
    M block/vxhs.c
    M blockdev.c
    M hmp-commands.hx
    M hw/block/virtio-blk.c
    M include/block/block.h
    M include/block/block_int.h
    M include/block/nbd.h
    M include/block/snapshot.h
    M include/io/channel.h
    M include/sysemu/block-backend.h
    M io/channel.c
    M nbd/client.c
    M nbd/nbd-internal.h
    M qemu-img.c
    M scripts/qemu.py
    M tests/Makefile.include
    M tests/qemu-iotests/045
    M tests/qemu-iotests/051.out
    M tests/qemu-iotests/051.pc.out
    M tests/qemu-iotests/110
    M tests/qemu-iotests/110.out
    M tests/qemu-iotests/178
    M tests/qemu-iotests/178.out.qcow2
    M tests/qemu-iotests/206.out
    M tests/qemu-iotests/207
    M tests/qemu-iotests/207.out
    M tests/qemu-iotests/210
    M tests/qemu-iotests/210.out
    M tests/qemu-iotests/211
    M tests/qemu-iotests/211.out
    M tests/qemu-iotests/212
    M tests/qemu-iotests/212.out
    M tests/qemu-iotests/213
    M tests/qemu-iotests/213.out
    A tests/qemu-iotests/224
    A tests/qemu-iotests/224.out
    A tests/qemu-iotests/228
    A tests/qemu-iotests/228.out
    M tests/qemu-iotests/232
    M tests/qemu-iotests/237
    M tests/qemu-iotests/237.out
    M tests/qemu-iotests/common.rc
    M tests/qemu-iotests/group
    M tests/qemu-iotests/iotests.py
    M tests/test-bdrv-drain.c
    A tests/test-bdrv-graph-mod.c
    M util/aio-posix.c

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

Block layer patches:

- Block graph change fixes (avoid loops, cope with non-tree graphs)
- bdrv_set_aio_context() related fixes
- HMP snapshot commands: Use only tag, not the ID to identify snapshots
- qmeu-img, commit: Error path fixes
- block/nvme: Build fix for gcc 9
- MAINTAINERS updates
- Fix various issues with bdrv_refresh_filename()
- Fix various iotests
- Include LUKS overhead in qemu-img measure for qcow2
- A fix for vmdk's image creation interface

# gpg: Signature made Mon 25 Feb 2019 14:18:15 GMT
# gpg:                using RSA key 7F09B272C88F2FD6
# gpg: Good signature from "Kevin Wolf <address@hidden>" [full]
# Primary key fingerprint: DC3D EB15 9A9A F95D 3D74  56FE 7F09 B272 C88F 2FD6

* remotes/kevin/tags/for-upstream: (71 commits)
  iotests: Skip 211 on insufficient memory
  vmdk: false positive of compat6 with hwversion not set
  iotests: add LUKS payload overhead to 178 qemu-img measure test
  qcow2: include LUKS payload overhead in qemu-img measure
  iotests.py: s/_/-/g on keys in qmp_log()
  iotests: Let 045 be run concurrently
  iotests: Filter SSH paths
  iotests.py: Filter filename in any string value
  iotests.py: Add is_str()
  iotests: Fix 207 to use QMP filters for qmp_log
  iotests: Fix 232 for LUKS
  iotests: Remove superfluous rm from 232
  iotests: Fix 237 for Python 2.x
  iotests: Re-add filename filters
  iotests: Test json:{} filenames of internal BDSs
  block: BDS options may lack the "driver" option
  block/null: Generate filename even with latency-ns
  block/curl: Implement bdrv_refresh_filename()
  block/curl: Harmonize option defaults
  block/nvme: Fix bdrv_refresh_filename()
  ...

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


Compare: https://github.com/qemu/qemu/compare/86c7e2f4a933...adf2e451f357



reply via email to

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