Skip to content
Permalink
Branch: master
Commits on Jun 18, 2019
  1. iotests: Test failure to loosen restrictions

    XanClic authored and Kevin Wolf committed May 22, 2019
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  2. block: Ignore loosening perm restrictions failures

    XanClic authored and Kevin Wolf committed May 22, 2019
    We generally assume that loosening permission restrictions can never
    fail.  We have seen in the past that this assumption is wrong.  This has
    led to crashes because we generally pass &error_abort when loosening
    permissions.
    
    However, a failure in such a case should actually be handled in quite
    the opposite way: It is very much not fatal, so qemu may report it, but
    still consider the operation successful.  The only realistic problem is
    that qemu may then retain permissions and thus locks on images it
    actually does not require.  But again, that is not fatal.
    
    To implement this behavior, we make all functions that change
    permissions and that pass &error_abort to the initiating function
    (bdrv_check_perm() or bdrv_child_check_perm()) evaluate the
    @loosen_restrictions value introduced in the previous patch.  If it is
    true and an error did occur, we abort the permission update, discard the
    error, and instead report success to the caller.
    
    bdrv_child_try_set_perm() itself does not pass &error_abort, but it is
    the only public function to change permissions.  As such, callers may
    pass &error_abort to it, expecting dropping permission restrictions to
    never fail.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  3. block: Add *tighten_restrictions to *check*_perm()

    XanClic authored and Kevin Wolf committed May 22, 2019
    This patch makes three functions report whether the necessary permission
    change tightens restrictions or not.  These functions are:
    - bdrv_check_perm()
    - bdrv_check_update_perm()
    - bdrv_child_check_perm()
    
    Callers can use this result to decide whether a failure is fatal or not
    (see the next patch).
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  4. block: Fix order in bdrv_replace_child()

    XanClic authored and Kevin Wolf committed May 22, 2019
    We have to start by applying the permission restrictions to new_bs
    before we can loosen them on old_bs.  See the comment for the
    explanation.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  5. block/commit: Drop bdrv_child_try_set_perm()

    XanClic authored and Kevin Wolf committed May 22, 2019
    commit_top_bs never requests or unshares any permissions.  There is no
    reason to make this so explicit here.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  6. block/mirror: Fix child permissions

    XanClic authored and Kevin Wolf committed May 22, 2019
    We cannot use bdrv_child_try_set_perm() to give up all restrictions on
    the child edge, and still have bdrv_mirror_top_child_perm() request
    BLK_PERM_WRITE.  Fix this by making bdrv_mirror_top_child_perm() return
    0/BLK_PERM_ALL when we want to give up all permissions, and replacing
    bdrv_child_try_set_perm() by bdrv_child_refresh_perms().
    
    The bdrv_child_try_set_perm() before removing the node with
    bdrv_replace_node() is then unnecessary.  No permissions have changed
    since the previous invocation of bdrv_child_try_set_perm().
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  7. block: Add bdrv_child_refresh_perms()

    XanClic authored and Kevin Wolf committed May 22, 2019
    If a block node uses bdrv_child_try_set_perm() to change the permission
    it takes on its child, the result may be very short-lived.  If anything
    makes the block layer recalculate the permissions internally, it will
    invoke the node driver's .bdrv_child_perm() implementation.  The
    permission/shared permissions masks that returns will then override the
    values previously passed to bdrv_child_try_set_perm().
    
    If drivers want a child edge to have specific values for the
    permissions/shared permissions mask, it must return them in
    .bdrv_child_perm().  Consequentially, there is no need for them to pass
    the same values to bdrv_child_try_set_perm() then: It is better to have
    a function that invokes .bdrv_child_perm() and calls
    bdrv_child_try_set_perm() with the result.  This patch adds such a
    function under the name of bdrv_child_refresh_perms().
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  8. file-posix: Update open_flags in raw_set_perm()

    XanClic authored and Kevin Wolf committed May 22, 2019
    raw_check_perm() + raw_set_perm() can change the flags associated with
    the current FD.  If so, we have to update BDRVRawState.open_flags
    accordingly.  Otherwise, we may keep reopening the FD even though the
    current one already has the correct flags.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Kevin Wolf <kwolf@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  9. iotests: Hide timestamps for skipped tests

    XanClic authored and Kevin Wolf committed Jun 13, 2019
    Currently, the "thistime" variable is not reinitialized on every loop
    iteration.  This leads to tests that do not yield a run time (because
    they failed or were skipped) printing the run time of the previous test
    that did.  Fix that by reinitializing "thistime" for every test.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Commits on Jun 14, 2019
  1. iotests: Test qemu-img convert -C --salvage

    XanClic committed May 7, 2019
    We do not support this combination (yet), so this should yield an error
    message.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Tested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-8-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  2. iotests: Test qemu-img convert --salvage

    XanClic committed May 7, 2019
    This test converts a simple image to another, but blkdebug injects
    block_status and read faults at some offsets.  The resulting image
    should be the same as the input image, except that sectors that could
    not be read have to be 0.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190507203508.18026-7-mreitz@redhat.com
    Tested-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    [mreitz: Dropped superfluous printf from _filter_offsets, as suggested
             by Vladimir; disable test for VDI and IMGOPTSSYNTAX]
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  3. blkdebug: Inject errors on .bdrv_co_block_status()

    XanClic committed May 7, 2019
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-6-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  4. blkdebug: Add "none" event

    XanClic committed May 7, 2019
    Together with @iotypes and @sector, this can be used to trap e.g. the
    first read or write access to a certain sector without having to know
    what happens internally in the block layer, i.e. which "real" events
    happen right before such an access.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-5-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  5. blkdebug: Add @iotype error option

    XanClic committed May 7, 2019
    This new error option allows users of blkdebug to inject errors only on
    certain kinds of I/O operations.  Users usually want to make a very
    specific operation fail, not just any; but right now they simply hope
    that the event that triggers the error injection is followed up with
    that very operation.  That may not be true, however, because the block
    layer is changing (including blkdebug, which may increase the number of
    types of I/O operations on which to inject errors).
    
    The new option's default has been chosen to keep backwards
    compatibility.
    
    Note that similar to the internal representation, we could choose to
    expose this option as a list of I/O types.  But there is no practical
    use for this, because as described above, users usually know exactly
    which kind of operation they want to make fail, so there is no need to
    specify multiple I/O types at once.  In addition, exposing this option
    as a list would require non-trivial changes to qemu_opts_absorb_qdict().
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-4-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  6. qemu-img: Add salvaging mode to convert

    XanClic committed May 7, 2019
    This adds a salvaging mode (--salvage) to qemu-img convert which ignores
    read errors and treats the respective areas as containing only zeroes.
    This can be used for instance to at least partially recover the data
    from terminally corrupted qcow2 images.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-3-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  7. qemu-img: Move quiet into ImgConvertState

    XanClic committed May 7, 2019
    Move img_convert()'s quiet flag into the ImgConvertState so it is
    accessible by nested functions.  -q dictates that it suppresses anything
    but errors, so if those functions want to emit warnings, they need to
    query this flag first.  (There currently are no such warnings, but there
    will be as of the next patch.)
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
    Message-id: 20190507203508.18026-2-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  8. blockdev: Overlays are not snapshots

    XanClic committed Jun 3, 2019
    There are error messages which refer to an overlay node as the snapshot.
    That is wrong, those are two different things.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-id: 20190603202236.1342-3-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  9. qapi/block-core: Overlays are not snapshots

    XanClic committed Jun 3, 2019
    A snapshot is something that reflects the state of something at a
    certain point in time.  It does not change.
    
    The file our snapshot commands create (or the node they install) is not
    a snapshot, as it does change over time.  It is an overlay.  We cannot
    do anything about the parameter names, but we can at least adjust the
    descriptions to reflect that fact.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-id: 20190603202236.1342-2-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  10. qemu-img: Fix options leakage in img_rebase()

    XanClic committed May 28, 2019
    img_rebase() can leak a QDict in two occasions.  Fix it.
    
    Coverity: CID 1401416
    Fixes: d16699b
    Fixes: 330c729
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190528195338.12376-1-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  11. iotests: Fix intermittent failure in 219

    XanClic committed May 16, 2019
    In 219, we wait for the job to make progress before we emit its status.
    This makes the output reliable.  We do not wait for any more progress if
    the job's current-progress already matches its total-progress.
    
    Unfortunately, there is a bug: Right after the job has been started,
    it's possible that total-progress is still 0.  In that case, we may skip
    the first progress-making step and keep ending up 64 kB short.
    
    To fix that bug, we can simply wait for total-progress to reach 4 MB
    (the image size) after starting the job.
    
    Reported-by: Karen Mezick <kmezick@redhat.com>
    Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1686651
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-id: 20190516161114.27596-1-mreitz@redhat.com
    Reviewed-by: John Snow <jsnow@redhat.com>
    [mreitz: Adjusted commit message as per John's proposal]
    Signed-off-by: Max Reitz <mreitz@redhat.com>
  12. iotests: Filter 175's allocation information

    XanClic committed May 16, 2019
    It is possible for an empty file to take up blocks on a filesystem, for
    example:
    
    $ qemu-img create -f raw test.img 1G
    Formatting 'test.img', fmt=raw size=1073741824
    $ mkfs.ext4 -I 128 -q test.img
    $ mkdir test-mount
    $ sudo mount -o loop test.img test-mount
    $ sudo touch test-mount/test-file
    $ stat -c 'blocks=%b' test-mount/test-file
    blocks=8
    
    These extra blocks (one cluster) are apparently used for metadata,
    because they are always there, on top of blocks used for data:
    
    $ sudo dd if=/dev/zero of=test-mount/test-file bs=1M count=1
    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00135339 s, 775 MB/s
    $ stat -c 'blocks=%b' test-mount/test-file
    blocks=2056
    
    Make iotest 175 take this into account.
    
    Reported-by: Thomas Huth <thuth@redhat.com>
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Reviewed-by: Nir Soffer <nsoffer@redhat.com>
    Message-id: 20190516144319.12570-1-mreitz@redhat.com
    Signed-off-by: Max Reitz <mreitz@redhat.com>
Commits on Jun 13, 2019
  1. iotests: Let 233 run concurrently

    XanClic authored and ebblake committed May 8, 2019
    common.nbd's nbd_server_set_tcp_port() tries to find a free port, and
    then uses it for the whole test run.  However, this is racy because even
    if the port was free at the beginning, there is no guarantee it will
    continue to be available.  Therefore, 233 currently cannot reliably be
    run concurrently with other NBD TCP tests.
    
    This patch addresses the problem by dropping nbd_server_set_tcp_port(),
    and instead finding a new port every time nbd_server_start_tcp_socket()
    is invoked.  For this, we run qemu-nbd with --fork and on error evaluate
    the output to see whether it contains "Address already in use".  If so,
    we try the next port.
    
    On success, we still want to continually redirect the output from
    qemu-nbd to stderr.  To achieve both, we redirect qemu-nbd's stderr to a
    FIFO that we then open in bash.  If the parent process exits with status
    0 (which means that the server has started successfully), we launch a
    background cat process that copies the FIFO to stderr.  On failure, we
    read the whole content into a variable and then evaluate it.
    
    While at it, use --fork in nbd_server_start_unix_socket(), too.  Doing
    so allows us to drop nbd_server_wait_for_*_socket().
    
    Note that the reason common.nbd did not use --fork before is that
    qemu-nbd did not have --pid-file.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-Id: <20190508211820.17851-6-mreitz@redhat.com>
    Signed-off-by: Eric Blake <eblake@redhat.com>
  2. iotests: Use qemu-nbd's --pid-file

    XanClic authored and ebblake committed May 8, 2019
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-Id: <20190508211820.17851-5-mreitz@redhat.com>
    Signed-off-by: Eric Blake <eblake@redhat.com>
  3. qemu-nbd: Do not close stderr

    XanClic authored and ebblake committed May 8, 2019
    We kept old_stderr specifically so we could keep emitting error message
    on stderr.  However, qemu_daemon() closes stderr.  Therefore, we need to
    dup() stderr to old_stderr before invoking qemu_daemon().
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-Id: <20190508211820.17851-4-mreitz@redhat.com>
    Signed-off-by: Eric Blake <eblake@redhat.com>
  4. iotests.py: Add qemu_nbd_early_pipe()

    XanClic authored and ebblake committed May 8, 2019
    qemu_nbd_pipe() currently unconditionally reads qemu-nbd's output.  That
    is not ideal because qemu-nbd may keep stderr open after the parent
    process has exited.
    
    Currently, the only user of qemu_nbd_pipe() is 147, which discards the
    whole output if the parent process returned success and only evaluates
    it on error.  Therefore, we can replace qemu_nbd_pipe() by
    qemu_nbd_early_pipe() that does the same: Discard the output on success,
    and return it on error.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    Message-Id: <20190508211820.17851-3-mreitz@redhat.com>
    Signed-off-by: Eric Blake <eblake@redhat.com>
  5. qemu-nbd: Add --pid-file option

    XanClic authored and ebblake committed May 8, 2019
    --fork is a bit boring if there is no way to get the child's PID.  This
    option helps.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Message-Id: <20190508211820.17851-2-mreitz@redhat.com>
    Signed-off-by: Eric Blake <eblake@redhat.com>
Commits on Jun 7, 2019
  1. ui/curses: Fix build with -m32

    XanClic authored and kraxel committed May 27, 2019
    wchar_t may resolve to be an unsigned long on 32-bit architectures.
    Using the %x conversion specifier will then give a compiler warning:
    
    ui/curses.c: In function ‘get_ucs’:
    ui/curses.c:492:49: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘wchar_t’ {aka ‘long int’} [-Werror=format=]
      492 |         fprintf(stderr, "Could not convert 0x%04x "
          |                                              ~~~^
          |                                                 |
          |                                                 unsigned int
          |                                              %04lx
      493 |                         "from wchar_t to a multibyte character: %s\n",
      494 |                         wch, strerror(errno));
          |                         ~~~
          |                         |
          |                         wchar_t {aka long int}
    ui/curses.c:504:49: error: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘wchar_t’ {aka ‘long int’} [-Werror=format=]
      504 |         fprintf(stderr, "Could not convert 0x%04x "
          |                                              ~~~^
          |                                                 |
          |                                                 unsigned int
          |                                              %04lx
      505 |                         "from a multibyte character to UCS-2 : %s\n",
      506 |                         wch, strerror(errno));
          |                         ~~~
          |                         |
          |                         wchar_t {aka long int}
    
    Fix this by casting the wchar_t value to an unsigned long and using %lx
    as the conversion specifier.
    
    Fixes: b7b664a
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
    Message-id: 20190527142540.23255-1-mreitz@redhat.com
    Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Commits on Jun 4, 2019
  1. iotests: Test cancelling a job and closing the VM

    XanClic authored and Kevin Wolf committed May 22, 2019
    This patch adds a test where we cancel a throttled mirror job and
    immediately close the VM before it can be cancelled.  Doing so will
    invoke bdrv_drain_all() while the mirror job tries to drain the
    throttled node.  When bdrv_drain_all_end() tries to lift its drain on
    the throttle node, the job will exit and replace the current root node
    of the BB drive0 (which is the job's filter node) by the throttle node.
    Before the previous patch, this replacement did not increase drive0's
    quiesce_counter by a sufficient amount, so when
    bdrv_parent_drained_end() (invoked by bdrv_do_drained_end(), invoked by
    bdrv_drain_all_end()) tried to end the drain on all of the throttle
    node's parents, it decreased drive0's quiesce_counter below 0 -- which
    fails an assertion.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  2. block/io: Delay decrementing the quiesce_counter

    XanClic authored and Kevin Wolf committed May 22, 2019
    When ending a drained section, bdrv_do_drained_end() currently first
    decrements the quiesce_counter, and only then actually ends the drain.
    
    The bdrv_drain_invoke(bs, false) call may cause graph changes.  Say the
    graph change involves replacing an existing BB's ("blk") BDS
    (blk_bs(blk)) by @bs.  Let us introducing the following values:
    - bs_oqc = old_quiesce_counter
      (so bs->quiesce_counter == bs_oqc - 1)
    - obs_qc = blk_bs(blk)->quiesce_counter (before bdrv_drain_invoke())
    
    Let us assume there is no blk_pread_unthrottled() involved, so
    blk->quiesce_counter == obs_qc (before bdrv_drain_invoke()).
    
    Now replacing blk_bs(blk) by @bs will reduce blk->quiesce_counter by
    obs_qc (making it 0) and increase it by bs_oqc-1 (making it bs_oqc-1).
    
    bdrv_drain_invoke() returns and we invoke bdrv_parent_drained_end().
    This will decrement blk->quiesce_counter by one, so it would be -1 --
    were there not an assertion against that in blk_root_drained_end().
    
    We therefore have to keep the quiesce_counter up at least until
    bdrv_drain_invoke() returns, so that bdrv_parent_drained_end() does the
    right thing for the parents @bs got during bdrv_drain_invoke().
    
    But let us delay it even further, namely until bdrv_parent_drained_end()
    returns, because then it mirrors bdrv_do_drained_begin(): There, we
    first increment the quiesce_counter, then begin draining the parents,
    and then call bdrv_drain_invoke().  It makes sense to let
    bdrv_do_drained_end() unravel this exactly in reverse.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Commits on May 20, 2019
  1. iotests: Make 245 faster and more reliable

    XanClic authored and Kevin Wolf committed May 15, 2019
    Sometimes, 245 fails for me because some stream job has already finished
    while the test expects it to still be active.  (With -c none, it fails
    basically every time.) The most reliable way to fix this is to simply
    set auto_finalize=false so the job will remain in the block graph as
    long as we need it.  This allows us to drop the rate limiting, too,
    which makes the test faster.
    
    The only problem with this is that there is a single place that yields a
    different error message depending on whether the stream job is still
    copying data (so COR is enabled) or not (COR has been disabled, but the
    job still has the WRITE_UNCHANGED permission on the target node).  We
    can easily address that by expecting either error message.
    
    Note that we do not need auto_finalize=false (or rate limiting) for the
    active commit job, because It never completes without an explicit
    block-job-complete anyway.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  2. iotests.py: Fix VM.run_job

    XanClic authored and Kevin Wolf committed May 15, 2019
    log() is in the current module, there is no need to prefix it.  In fact,
    doing so may make VM.run_job() unusable in tests that never use
    iotests.log() themselves.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  3. iotests.py: Let assert_qmp() accept an array

    XanClic authored and Kevin Wolf committed May 15, 2019
    Sometimes we cannot tell which error message qemu will emit, and we do
    not care.  With this change, we can then just pass an array of all
    possible messages to assert_qmp() and it will choose the right one.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  4. block: Improve "Block node is read-only" message

    XanClic authored and Kevin Wolf committed May 15, 2019
    This message does not make any sense when it appears as the response to
    making an R/W node read-only.  We should detect that case and emit a
    different message, then.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Reviewed-by: Alberto Garcia <berto@igalia.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  5. qemu-img.texi: Describe human-readable info output

    XanClic authored and Kevin Wolf committed May 15, 2019
    Ideally, it should be self-explanatory.  However, keys like "disk size"
    arguably really are not self-explanatory.  In any case, there is no harm
    in going into a some more detail here.
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
  6. qemu-img.texi: Be specific about JSON object types

    XanClic authored and Kevin Wolf committed May 15, 2019
    Just writing that --output=json outputs JSON information does not really
    help; we should also make a note of what QAPI type the result object
    has.  (The map subcommand does not emit a QAPI-typed object, but its
    section already describes the object structure well enough.)
    
    Signed-off-by: Max Reitz <mreitz@redhat.com>
    Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Older
You can’t perform that action at this time.