qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] d81e1e: blockdev-backup: don't check aio_cont


From: Peter Maydell
Subject: [Qemu-commits] [qemu/qemu] d81e1e: blockdev-backup: don't check aio_context too early
Date: Fri, 14 Jun 2019 07:51:20 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: d81e1efbea7d19c2f142d300df56538c73800590
      
https://github.com/qemu/qemu/commit/d81e1efbea7d19c2f142d300df56538c73800590
  Author: John Snow <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev-backup: don't check aio_context too early

in blockdev_backup_prepare, we check to make sure that the target is
associated with a compatible aio context. However, do_blockdev_backup is
called later and has some logic to move the target to a compatible
aio_context. The transaction version will fail certain commands
needlessly early as a result.

Allow blockdev_backup_prepare to simply call do_blockdev_backup, which
will ultimately decide if the contexts are compatible or not.

Note: the transaction version has always disallowed this operation since
its initial commit bd8baecd (2014), whereas the version of
qmp_blockdev_backup at the time, from commit c29c1dd312f, tried to
enforce the aio_context switch instead. It's not clear, and I can't see
from the mailing list archives at the time, why the two functions take a
different approach. It wasn't until later in efd7556708b (2016) that the
standalone version tried to determine if it could set the context or
not.

Reported-by: aihua liang <address@hidden>
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1683498
Signed-off-by: John Snow <address@hidden>
Message-id: address@hidden
Reviewed-by: Max Reitz <address@hidden>
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8b6f5f8b9f3bec5cbeebefab34bae0102a2581b3
      
https://github.com/qemu/qemu/commit/8b6f5f8b9f3bec5cbeebefab34bae0102a2581b3
  Author: John Snow <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  iotests.py: do not use infinite waits

Cap waits to 60 seconds so that iotests can fail gracefully if something
goes wrong.

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


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

  Changed paths:
    M python/qemu/__init__.py

  Log Message:
  -----------
  QEMUMachine: add events_wait method

Instead of event_wait which looks for a single event, add an events_wait
which can look for any number of events simultaneously. However, it
will still only return one at a time, whichever happens first.

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


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

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

  Log Message:
  -----------
  iotests.py: rewrite run_job to be pickier

Don't pull events out of the queue that don't belong to us;
be choosier so that we can use this method to drive jobs that
were launched by transactions that may have more jobs.

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


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

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

  Log Message:
  -----------
  iotests: add iotest 256 for testing blockdev-backup across iothread contexts

Signed-off-by: John Snow <address@hidden>
Message-id: address@hidden
Reviewed-by: Max Reitz <address@hidden>
[mreitz: Moved from 250 to 256]
Signed-off-by: Max Reitz <address@hidden>


  Commit: 9e8dfad045211fbb8f4184285747907517550f23
      
https://github.com/qemu/qemu/commit/9e8dfad045211fbb8f4184285747907517550f23
  Author: John Snow <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M python/qemu/__init__.py

  Log Message:
  -----------
  event_match: always match on None value

Before, event_match didn't always recurse if the event value was not a
dictionary, and would instead check for equality immediately.

By delaying equality checking to post-recursion, we can allow leaf
values like "5" to match "None" and take advantage of the generic
None-returns-True clause.

This makes the matching a little more obviously consistent at the
expense of being able to check for explicit None values, which is
probably not that important given what this function is used for.

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


  Commit: a3bd71b5773a3664692601e6e181f108e1e4aa41
      
https://github.com/qemu/qemu/commit/a3bd71b5773a3664692601e6e181f108e1e4aa41
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  iotests: Filter 175's allocation information

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 <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Nir Soffer <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: d9efe9384ecb68dcb971b439099e9bead653f96b
      
https://github.com/qemu/qemu/commit/d9efe9384ecb68dcb971b439099e9bead653f96b
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M tests/qemu-iotests/219

  Log Message:
  -----------
  iotests: Fix intermittent failure in 219

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 <address@hidden>
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1686651
Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Reviewed-by: John Snow <address@hidden>
[mreitz: Adjusted commit message as per John's proposal]
Signed-off-by: Max Reitz <address@hidden>


  Commit: 6653d1318d623681fc7e849e9ae5069ad144864a
      
https://github.com/qemu/qemu/commit/6653d1318d623681fc7e849e9ae5069ad144864a
  Author: Andrey Shinkevich <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M hw/block/fdc.c

  Log Message:
  -----------
  hw/block/fdc: floppy command FIFO memory initialization

The uninitialized memory allocated for the command FIFO of the
floppy controller during the VM hardware initialization incurs
many unwanted reports by Valgrind when VM state is being saved.
That verbosity hardens a search for the real memory issues when
the iotests run. Particularly, the patch eliminates 20 unnecessary
reports of the Valgrind tool in the iotest #169.

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


  Commit: 549fb88045253cb246f900a9db447800313865c4
      
https://github.com/qemu/qemu/commit/549fb88045253cb246f900a9db447800313865c4
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M tests/qemu-iotests/254

  Log Message:
  -----------
  iotests: restrict 254 to support only qcow2

Test fails at least for qcow, because of different cluster sizes in
base and top (and therefore different granularities of bitmaps we are
trying to merge).

The test aim is to check block-dirty-bitmap-merge between different
nodes functionality, no needs to check all formats. So, let's just drop
support for anything except qcow2.

Reported-by: Max Reitz <address@hidden>
Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: f22356d95524347ff255ae58a96f0f7052018d4e
      
https://github.com/qemu/qemu/commit/f22356d95524347ff255ae58a96f0f7052018d4e
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M qemu-img.c

  Log Message:
  -----------
  qemu-img: Fix options leakage in img_rebase()

img_rebase() can leak a QDict in two occasions.  Fix it.

Coverity: CID 1401416
Fixes: d16699b64671466b42079c45b89127aeea1ca565
Fixes: 330c72957196e0ae382abcaa97ebf4eb9bc8574f
Signed-off-by: Max Reitz <address@hidden>
Message-id: address@hidden
Reviewed-by: John Snow <address@hidden>
Signed-off-by: Max Reitz <address@hidden>


  Commit: 681b86ac506bf994a92f17e5a8dedb278aab6ede
      
https://github.com/qemu/qemu/commit/681b86ac506bf994a92f17e5a8dedb278aab6ede
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M qapi/block-core.json

  Log Message:
  -----------
  qapi/block-core: Overlays are not snapshots

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


  Commit: a2bb6f8c920066fba7bd3fdddf214ea40c0fafab
      
https://github.com/qemu/qemu/commit/a2bb6f8c920066fba7bd3fdddf214ea40c0fafab
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M blockdev.c
    M tests/qemu-iotests/085.out

  Log Message:
  -----------
  blockdev: Overlays are not snapshots

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


  Commit: 3d96cb91d7812c27142e0c722482bfd35661e50c
      
https://github.com/qemu/qemu/commit/3d96cb91d7812c27142e0c722482bfd35661e50c
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M qemu-img.c

  Log Message:
  -----------
  qemu-img: Move quiet into ImgConvertState

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 <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 8eaac025fb43b16a38671e6b80e7059cd8af3403
      
https://github.com/qemu/qemu/commit/8eaac025fb43b16a38671e6b80e7059cd8af3403
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M qemu-img-cmds.hx
    M qemu-img.c
    M qemu-img.texi

  Log Message:
  -----------
  qemu-img: Add salvaging mode to convert

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 <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 16789db3de64147c7271d30a9d379b2a8aa2b81e
      
https://github.com/qemu/qemu/commit/16789db3de64147c7271d30a9d379b2a8aa2b81e
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  blkdebug: Add @iotype error option

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 <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: f8cec157cb7f04cb247786f8776ebfcebd9b61be
      
https://github.com/qemu/qemu/commit/f8cec157cb7f04cb247786f8776ebfcebd9b61be
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  blkdebug: Add "none" event

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 <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 1adb0b5e0f7c5c4f707b1ffa98e2b15ef51ebbc5
      
https://github.com/qemu/qemu/commit/1adb0b5e0f7c5c4f707b1ffa98e2b15ef51ebbc5
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  blkdebug: Inject errors on .bdrv_co_block_status()

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


  Commit: 0b1eb0ce7d734affdc181ca583d12947d17e47bf
      
https://github.com/qemu/qemu/commit/0b1eb0ce7d734affdc181ca583d12947d17e47bf
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  iotests: Test qemu-img convert --salvage

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 <address@hidden>
Message-id: address@hidden
Tested-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
[mreitz: Dropped superfluous printf from _filter_offsets, as suggested
         by Vladimir; disable test for VDI and IMGOPTSSYNTAX]
Signed-off-by: Max Reitz <address@hidden>


  Commit: 21c1ce592a144188dfe59b9e156a97da412a59a2
      
https://github.com/qemu/qemu/commit/21c1ce592a144188dfe59b9e156a97da412a59a2
  Author: Max Reitz <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

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

  Log Message:
  -----------
  iotests: Test qemu-img convert -C --salvage

We do not support this combination (yet), so this should yield an error
message.

Signed-off-by: Max Reitz <address@hidden>
Tested-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: f3d0bec9f80e4ed7796fffa834ba0a53f2094f7f
      
https://github.com/qemu/qemu/commit/f3d0bec9f80e4ed7796fffa834ba0a53f2094f7f
  Author: Peter Maydell <address@hidden>
  Date:   2019-06-14 (Fri, 14 Jun 2019)

  Changed paths:
    M block/blkdebug.c
    M blockdev.c
    M hw/block/fdc.c
    M python/qemu/__init__.py
    M qapi/block-core.json
    M qemu-img-cmds.hx
    M qemu-img.c
    M qemu-img.texi
    M tests/qemu-iotests/082
    M tests/qemu-iotests/082.out
    M tests/qemu-iotests/085.out
    M tests/qemu-iotests/175
    M tests/qemu-iotests/175.out
    M tests/qemu-iotests/219
    A tests/qemu-iotests/251
    A tests/qemu-iotests/251.out
    M tests/qemu-iotests/254
    A tests/qemu-iotests/256
    A tests/qemu-iotests/256.out
    M tests/qemu-iotests/group
    M tests/qemu-iotests/iotests.py

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/maxreitz/tags/pull-block-2019-06-14' 
into staging

Block patches:
- Allow blockdev-backup from nodes that are not in qemu's main AIO
  context to newly added nodes
- Add salvaging mode to qemu-img convert
- Minor fixes to tests, documentation, and for less Valgrind annoyance

# gpg: Signature made Fri 14 Jun 2019 14:38:11 BST
# gpg:                using RSA key 91BEB60A30DB3E8857D11829F407DB0061D5CF40
# gpg:                issuer "address@hidden"
# gpg: Good signature from "Max Reitz <address@hidden>" [full]
# Primary key fingerprint: 91BE B60A 30DB 3E88 57D1  1829 F407 DB00 61D5 CF40

* remotes/maxreitz/tags/pull-block-2019-06-14:
  iotests: Test qemu-img convert -C --salvage
  iotests: Test qemu-img convert --salvage
  blkdebug: Inject errors on .bdrv_co_block_status()
  blkdebug: Add "none" event
  blkdebug: Add @iotype error option
  qemu-img: Add salvaging mode to convert
  qemu-img: Move quiet into ImgConvertState
  blockdev: Overlays are not snapshots
  qapi/block-core: Overlays are not snapshots
  qemu-img: Fix options leakage in img_rebase()
  iotests: restrict 254 to support only qcow2
  hw/block/fdc: floppy command FIFO memory initialization
  iotests: Fix intermittent failure in 219
  iotests: Filter 175's allocation information
  event_match: always match on None value
  iotests: add iotest 256 for testing blockdev-backup across iothread contexts
  iotests.py: rewrite run_job to be pickier
  QEMUMachine: add events_wait method
  iotests.py: do not use infinite waits
  blockdev-backup: don't check aio_context too early

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


Compare: https://github.com/qemu/qemu/compare/5ec2eca83dc4...f3d0bec9f80e



reply via email to

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