qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] 709e57: qemu-iotests: Remove 091 from quick g


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] 709e57: qemu-iotests: Remove 091 from quick group
Date: Tue, 13 Jan 2015 07:00:09 -0800

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: 709e57753b57cbef674e88e85056612d3e1727c2
      
https://github.com/qemu/qemu/commit/709e57753b57cbef674e88e85056612d3e1727c2
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/qemu-iotests/group

  Log Message:
  -----------
  qemu-iotests: Remove 091 from quick group

For the purpose of allowing running quick group on tmpfs.

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


  Commit: b8aff7d6bfa1632d722f47a1a6bca679221b6db3
      
https://github.com/qemu/qemu/commit/b8aff7d6bfa1632d722f47a1a6bca679221b6db3
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/qemu-iotests-quick.sh
    M tests/qemu-iotests/check

  Log Message:
  -----------
  qemu-iotests: Speed up make check-block

Using /tmp, which is usually mounted as tmpfs, the quick group can be
quicker.

On my laptop (Lenovo T430s with Fedora 20), this reduces the time from
50s to 30s.

Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: fcf5def1ab0f94ff120b7141c943b517d2ece83d
      
https://github.com/qemu/qemu/commit/fcf5def1ab0f94ff120b7141c943b517d2ece83d
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M async.c

  Log Message:
  -----------
  block: mark AioContext as recursive

AioContext can be accessed recursively, in fact that's what we do with
aio_poll.  Marking the GSource as recursive avoids that GLib blocks it
and unblocks it around every call to aio_dispatch, which is a pretty
expensive operation.

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


  Commit: e012b78cf5bc42f20ef1a1f78383035f2293ceea
      
https://github.com/qemu/qemu/commit/e012b78cf5bc42f20ef1a1f78383035f2293ceea
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: do not allocate an iovec per read of a growable/zero_after_eof BDS

Most reads do not go past the end of the file, and they can use the
input QEMUIOVector instead of creating one.  This removes the
qemu_iovec_* functions from the profile.

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


  Commit: ee82310f8a6cc9ba9e8d1ac892f1a3cfc0debd8c
      
https://github.com/qemu/qemu/commit/ee82310f8a6cc9ba9e8d1ac892f1a3cfc0debd8c
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M async.c

  Log Message:
  -----------
  block: replace g_new0 with g_new for bottom half allocation.

This saves about 15% of the clock cycles spent on allocation.  Using the
slice allocator does not add a visible improvement; allocation is faster
than malloc, while freeing seems to be slower.

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


  Commit: a97ceca578e69f9b050a2400e1979a068b0654eb
      
https://github.com/qemu/qemu/commit/a97ceca578e69f9b050a2400e1979a068b0654eb
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M scripts/checkpatch.pl

  Log Message:
  -----------
  checkpatch: Brace handling on multi-line condition

CODING_STYLE states the following about braces around blocks:

> The opening brace is on the line that contains the control flow
> statement that introduces the new block; [...]

This is obviously impossible with multi-line conditions. Therefore,
CODING_STYLE does not make any clear statement about where to put the
opening brace after a multi-line condition.

There is a reason to prefer to place the opening brace on an own line
after such a condition while still placing it on the same line as the
"control flow statement" if possible; that reason is that the last line
of a multi-line condition is indented, in the case of "if", it is often
indented by four spaces, just as much as the first statement in the
block will be indented. This is hard to read as there is no clearly
visible distinction between condition and block. Placing the opening
brace on a separate line solves this issue.

Also, there are cases where placing the opening brace on a separate line
is the only viable option; if the previous line had nearly 80 characters
and splitting it is not desirable, the opening brace is naturally placed
on an own line.

This patch fixes checkpatch.pl to not complain about braces on own lines
if the condition introducing the block spanned more than one line, or if
the previous line had 79 or 80 characters.

Furthermore, the warning about not having braces around a block is fixed
to mind braces not being on the last line of the condition.

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


  Commit: 0a82855a1a819f3de49781d42728f485fbd64284
      
https://github.com/qemu/qemu/commit/0a82855a1a819f3de49781d42728f485fbd64284
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  block: Get full backing filename from string

Introduce bdrv_get_full_backing_filename_from_filename(), a function
which takes the name of the backed file and a potentially relative
backing filename to produce the full (absolute) backing filename.

Use this function from bdrv_get_full_backing_filename().

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 9f07429e8873124c588847b0d499cb32b9410bdd
      
https://github.com/qemu/qemu/commit/9f07429e8873124c588847b0d499cb32b9410bdd
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  block: JSON filenames and relative backing files

When using a relative backing file name, qemu needs to know the
directory of the top image file. For JSON filenames, such a directory
cannot be easily determined (e.g. how do you determine the directory of
a qcow2 BDS directly on top of a quorum BDS?). Therefore, do not allow
relative filenames for the backing file of BDSs only having a JSON
filename.

Furthermore, BDS::exact_filename should be used whenever possible. If
BDS::filename is not equal to BDS::exact_filename, the former will
always be a JSON object.

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


  Commit: 291680186f7f8856d943793414d1b8df6c562fc4
      
https://github.com/qemu/qemu/commit/291680186f7f8856d943793414d1b8df6c562fc4
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: Relative backing file for image creation

Relative backing filenames are always relative to the backed image's
directory; the same applies to image creation. Therefore, if the backing
file has to be opened for determining its size (in case the size has not
been explicitly specified) its filename should be interpreted relative
to the new image's base directory and not relative to qemu's working
directory.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 1085daf9411e355ce3bd6d7034e23a8405599889
      
https://github.com/qemu/qemu/commit/1085daf9411e355ce3bd6d7034e23a8405599889
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block/vmdk.c

  Log Message:
  -----------
  block/vmdk: Relative backing file for creation

When a vmdk image is created with a backing file, it is opened to check
whether it is indeed a vmdk file by letting qemu probe it. When doing
so, the backing filename is relative to the image's base directory so it
should be interpreted accordingly.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 527ab22a2a268421564cfba3409d081aee22c22b
      
https://github.com/qemu/qemu/commit/527ab22a2a268421564cfba3409d081aee22c22b
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  iotests: Add test for relative backing file names

Sometimes, qemu does not have a filename to work with, so it does not
know which directory to use for a backing file specified by a relative
filename. Add a test which tests that qemu exits with an appropriate
error message.

Additionally, add a test for qemu-img create with a backing filename
relative to the backed image's base directory while omitting the image
size.

Signed-off-by: Max Reitz <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a06e43556e3faea22de4cce0da7a6f362d3ca9a6
      
https://github.com/qemu/qemu/commit/a06e43556e3faea22de4cce0da7a6f362d3ca9a6
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M qapi/block-core.json

  Log Message:
  -----------
  qapi: Fix document for BlockStats.node-name

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


  Commit: c4237dfa635900e4d1cdc6038d5efe3507f45f0c
      
https://github.com/qemu/qemu/commit/c4237dfa635900e4d1cdc6038d5efe3507f45f0c
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block.c
    M block/mirror.c
    M include/block/block.h
    M migration/block.c

  Log Message:
  -----------
  block: fix spoiling all dirty bitmaps by mirror and migration

Mirror and migration use dirty bitmaps for their purposes, and since
commit [block: per caller dirty bitmap] they use their own bitmaps, not
the global one. But they use old functions bdrv_set_dirty and
bdrv_reset_dirty, which change all dirty bitmaps.

Named dirty bitmaps series by Fam and Snow are affected: mirroring and
migration will spoil all (not related to this mirroring or migration)
named dirty bitmaps.

This patch fixes this by adding bdrv_set_dirty_bitmap and
bdrv_reset_dirty_bitmap, which change concrete bitmap. Also, to prevent
such mistakes in future, old functions bdrv_(set,reset)_dirty are made
static, for internal block usage.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
CC: John Snow <address@hidden>
CC: Fam Zheng <address@hidden>
CC: Denis V. Lunev <address@hidden>
CC: Stefan Hajnoczi <address@hidden>
CC: Kevin Wolf <address@hidden>
Reviewed-by: John Snow <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: b7b9d39a7a5bd3a7fe5968b7780c9868c3210a4d
      
https://github.com/qemu/qemu/commit/b7b9d39a7a5bd3a7fe5968b7780c9868c3210a4d
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M qapi-schema.json

  Log Message:
  -----------
  qapi: Comment version info in TransactionAction

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


  Commit: c29c1dd312f39ec18a3c6177c6da09a75e095d70
      
https://github.com/qemu/qemu/commit/c29c1dd312f39ec18a3c6177c6da09a75e095d70
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block/backup.c
    M blockdev.c
    M qapi/block-core.json
    M qmp-commands.hx

  Log Message:
  -----------
  qmp: Add command 'blockdev-backup'

Similar to drive-backup, but this command uses a device id as target
instead of creating/opening an image file.

Also add blocker on target bs, since the target is also a named device
now.

Add check and report error for bs == target which became possible but is
an illegal case with introduction of blockdev-backup.

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


  Commit: bd8baecddc3c45f1b3b8322fbf41a3c4b01ec1b7
      
https://github.com/qemu/qemu/commit/bd8baecddc3c45f1b3b8322fbf41a3c4b01ec1b7
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M blockdev.c
    M qapi-schema.json

  Log Message:
  -----------
  block: Add blockdev-backup to transaction

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


  Commit: 7c6a4ab871cae829ea754c717db2d40c2c115224
      
https://github.com/qemu/qemu/commit/7c6a4ab871cae829ea754c717db2d40c2c115224
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  qemu-iotests: Test blockdev-backup in 055

This applies cases on drive-backup on blockdev-backup, except cases with
target format and mode.

Also add a case to check source == target.

Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>
Message-id: address@hidden
Signed-off-by: Max Reitz <address@hidden>


  Commit: 4dd7b8d30cfa1aebee547958db27efd581a58d9b
      
https://github.com/qemu/qemu/commit/4dd7b8d30cfa1aebee547958db27efd581a58d9b
  Author: Max Reitz <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/qemu-iotests/067
    M tests/qemu-iotests/071
    M tests/qemu-iotests/071.out
    M tests/qemu-iotests/081
    M tests/qemu-iotests/087
    M tests/qemu-iotests/087.out
    M tests/qemu-iotests/099
    M tests/qemu-iotests/common.filter

  Log Message:
  -----------
  iotests: Filter out "I/O thread spun..." warning

Filter out the "main loop: WARNING: I/O thread spun for..." warning from
qemu output (it hardly matters for code specifically testing I/O).

Furthermore, use _filter_qemu in all the custom functions which run
qemu.

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


  Commit: 04636dc410b163c2243e66c3813dd4900a50a4ed
      
https://github.com/qemu/qemu/commit/04636dc410b163c2243e66c3813dd4900a50a4ed
  Author: Vladimir Sementsov-Ogievskiy <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M migration/block.c

  Log Message:
  -----------
  migration/block: fix pending() return value

Because of wrong return value of .save_live_pending() in
migration/block.c, migration finishes before the whole disk is
transferred. Such situation occurs when the migration process is fast
enough, for example when source and dest are on the same host.

If in the bulk phase we return something < max_size, we will skip
transferring the tail of the device. Currently we have "set pending to
BLOCK_SIZE if it is zero" for bulk phase, but there no guarantee, that
it will be < max_size.

True approach is to return, for example, max_size+1 when we are in the
bulk phase.

Signed-off-by: Vladimir Sementsov-Ogievskiy <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 292be092ad48ac530dd254ada109851e9a2353f5
      
https://github.com/qemu/qemu/commit/292be092ad48ac530dd254ada109851e9a2353f5
  Author: Marc MarĂ­ <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/Makefile
    M tests/libqos/malloc-pc.c
    M tests/libqos/malloc-pc.h
    A tests/libqos/malloc.c
    M tests/libqos/malloc.h

  Log Message:
  -----------
  libqos: Convert malloc-pc allocator to a generic allocator

The allocator in malloc-pc has been extracted, so it can be used in every arch.
This operation showed that both the alloc and free functions can be also
generic.
Because of this, the QGuestAllocator has been removed from is function to wrap
the alloc and free function, and now just contains the allocator parameters.
As a result, only the allocator initalizer and unitializer are arch dependent.

Signed-off-by: Marc MarĂ­ <address@hidden>
Reviewed-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: John Snow <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 1dbe67503b8d35cec797d2b8e742f11e4553cf3b
      
https://github.com/qemu/qemu/commit/1dbe67503b8d35cec797d2b8e742f11e4553cf3b
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M .gitignore

  Log Message:
  -----------
  .gitignore: Ignore generated "common.env"

Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: a2d9c0c407456faa871870c57cf99942739e28ab
      
https://github.com/qemu/qemu/commit/a2d9c0c407456faa871870c57cf99942739e28ab
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  qemu-iotests: Replace "/bin/true" with "true"

The former is not portable because on Mac OSX it is /usr/bin/true.

Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 9c8ab1ae0d7c4a135c832c784f088ae5e2140585
      
https://github.com/qemu/qemu/commit/9c8ab1ae0d7c4a135c832c784f088ae5e2140585
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/qemu-iotests/058

  Log Message:
  -----------
  qemu-iotests: Add "_supported_os Linux" to 058

Other cases have this, and this test is not portable as well, as we want
to add "make check-block" to "make check", it shouldn't fail on Mac OS
X.

Reported-by: Peter Maydell <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: bc521696607c5348fcd8a9e57b408d0ac0dbe2f8
      
https://github.com/qemu/qemu/commit/bc521696607c5348fcd8a9e57b408d0ac0dbe2f8
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  qemu-iotests: Add supported os parameter for python tests

If I understand correctly, qemu-iotests never meant to be portable. We
only support Linux for all the shell cases, but didn't specify it for
python tests. Now add this and default all the python tests as Linux
only. If we cares enough later, we can override the parameter in
individual cases.

Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: d1d1b206b07977fe0e75b0254e5b50c215c97803
      
https://github.com/qemu/qemu/commit/d1d1b206b07977fe0e75b0254e5b50c215c97803
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M coroutine-ucontext.c

  Log Message:
  -----------
  coroutine-ucontext: use __thread

ELF thread local storage is about 10% faster on tests/test-coroutine's
perf/cost test.  The timing on my machine is 190ns per iteration with
pthread TLS, 170 with ELF TLS.

Based on a patch by Kevin Wolf and Peter Lieven, but redone to follow
the model of coroutine-win32.c (including the important "noinline"
attribute!).

Platforms without thread-local storage (OpenBSD probably?) will need
a new-enough GCC for this to compile, in order to use the same emutls
support that Windows already relies on.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: ef57137f1b30545a477ab798d34a669b0abf5320
      
https://github.com/qemu/qemu/commit/ef57137f1b30545a477ab798d34a669b0abf5320
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M include/qemu/thread.h
    M util/qemu-thread-posix.c
    M util/qemu-thread-win32.c

  Log Message:
  -----------
  qemu-thread: add per-thread atexit functions

Destructors are the main additional feature of pthread TLS compared
to __thread.  If we were using C++ (hint, hint!) we could have used
thread-local objects with a destructor.  Since we are not, instead,
we add a simple Notifier-based API.

Note that the notifier must be per-thread as well.  We can add a
global list as well later, perhaps.

The Win32 implementation has some complications because a) detached
threads used not to have a QemuThreadData; b) the main thread does
not go through win32_start_routine, so we have to use atexit too.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 6d86ae0824bdd6175dd3874688a871e981093888
      
https://github.com/qemu/qemu/commit/6d86ae0824bdd6175dd3874688a871e981093888
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M tests/test-coroutine.c

  Log Message:
  -----------
  test-coroutine: avoid overflow on 32-bit systems

unsigned long is not large enough to represent 1000000000 * duration there.
Just use floating point.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: c740ad92d0d958fa785e5d7aa1b67ecaf30a6a54
      
https://github.com/qemu/qemu/commit/c740ad92d0d958fa785e5d7aa1b67ecaf30a6a54
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M include/qemu/queue.h

  Log Message:
  -----------
  QSLIST: add lock-free operations

These operations are trivial to implement and do not have ABA problems.
They are enough to implement simple multiple-producer, single consumer
lock-free lists or, as in the next patch, the multiple consumers can
steal a whole batch of elements and process them at their leisure.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 4d68e86bb10159099da0798f74e7512955f15eec
      
https://github.com/qemu/qemu/commit/4d68e86bb10159099da0798f74e7512955f15eec
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M qemu-coroutine.c

  Log Message:
  -----------
  coroutine: rewrite pool to avoid mutex

This patch removes the mutex by using fancy lock-free manipulation of
the pool.  Lock-free stacks and queues are not hard, but they can suffer
from the ABA problem so they are better avoided unless you have some
deferred reclamation scheme like RCU.  Otherwise you have to stick
with adding to a list, and emptying it completely.  This is what this
patch does, by coupling a lock-free global list of available coroutines
with per-CPU lists that are actually used on coroutine creation.

Whenever the destruction pool is big enough, the next thread that runs
out of coroutines will steal the whole destruction pool.  This is positive
in two ways:

1) the allocation does not have to do any atomic operation in the fast
path, it's entirely using thread-local storage.  Once every POOL_BATCH_SIZE
allocations it will do a single atomic_xchg.  Release does an atomic_cmpxchg
loop, that hopefully doesn't cause any starvation, and an atomic_inc.

A later patch will also remove atomic operations from the release path,
and try to avoid the atomic_xchg altogether---succeeding in doing so if
all devices either use ioeventfd or are not submitting requests actively.

2) in theory this should be completely adaptive.  The number of coroutines
around should be a little more than POOL_BATCH_SIZE * number of allocating
threads; so this also empties qemu_coroutine_adjust_pool_size.  (The previous
pool size was POOL_BATCH_SIZE * number of block backends, so it was a bit
more generous.  But if you actually have many high-iodepth disks, it's better
to put them in different iothreads, which will also use separate thread
pools and aio=native file descriptors).

This speeds up perf/cost (in tests/test-coroutine) by a factor of ~1.33.
No matter if we end with some kind of coroutine bypass scheme or not,
it cannot hurt to optimize hot code.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 66552b894bd68dd6539fb6d656ad2c21bdd6acbe
      
https://github.com/qemu/qemu/commit/66552b894bd68dd6539fb6d656ad2c21bdd6acbe
  Author: Paolo Bonzini <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

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

  Log Message:
  -----------
  coroutine: drop qemu_coroutine_adjust_pool_size

This is not needed anymore.  The new TLS-based algorithm is adaptive.

Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 51a2219bdceed16e81c6e2e2f08aed39c579728f
      
https://github.com/qemu/qemu/commit/51a2219bdceed16e81c6e2e2f08aed39c579728f
  Author: Peter Lieven <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M qemu-coroutine.c

  Log Message:
  -----------
  coroutine: try harder not to delete coroutines

Placing coroutines on the global pool should be preferrable, because it
can help all threads.  But if the global pool is full, we can still
try to save some allocations by stashing completed coroutines on the
local pool.  This is quite cheap too, because it does not require
atomic operations, and provides a gain of 15% in the best case.

Signed-off-by: Peter Lieven <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 095e4fa4b56cf511cb41005872eeace9a2f24582
      
https://github.com/qemu/qemu/commit/095e4fa4b56cf511cb41005872eeace9a2f24582
  Author: Peter Lieven <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block.c

  Log Message:
  -----------
  block: limited request size in write zeroes unsupported path

If bs->bl.max_write_zeroes is large and we end up in the unsupported
path we might allocate a lot of memory for the iovector and/or even
generate an oversized requests.

Fix this by limiting the request by the minimum of the reported
maximum transfer size or 16MB (32768 sectors).

Reported-by: Denis V. Lunev <address@hidden>
Signed-off-by: Peter Lieven <address@hidden>
Reviewed-by: Denis V. Lunev <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: bb00021de0b5908bc2c3ca467ad9a2b0c9c36459
      
https://github.com/qemu/qemu/commit/bb00021de0b5908bc2c3ca467ad9a2b0c9c36459
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M block.c
    M blockdev.c
    M hw/block/dataplane/virtio-blk.c
    M include/block/block.h

  Log Message:
  -----------
  block: Split BLOCK_OP_TYPE_COMMIT to BLOCK_OP_TYPE_COMMIT_{SOURCE, TARGET}

Like BLOCK_OP_TYPE_BACKUP_SOURCE and BLOCK_OP_TYPE_BACKUP_TARGET,
block-commit involves two asymmetric devices.

This change is not user-visible (yet), because commit only works with
device names.

But once we enable backing reference in blockdev-add, or specifying
node-name in block-commit command, we don't want the user to start two
commit jobs on the same backing chain, which will corrupt things because
of the final bdrv_swap.

Before we have per category blockers, splitting this type is still
better.

[Resolved virtio-blk dataplane conflict by replacing
BLOCK_OP_TYPE_COMMIT with both BLOCK_OP_TYPE_COMMIT_{SOURCE, TARGET}.
They are safe since the block job runs in the same AioContext as the
dataplane IOThread.
--Stefan]

Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 9a502563eef7d7c2c9120b237059426e229eefe9
      
https://github.com/qemu/qemu/commit/9a502563eef7d7c2c9120b237059426e229eefe9
  Author: John Snow <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M hw/ide/atapi.c
    M hw/ide/internal.h

  Log Message:
  -----------
  ide: Implement VPD response for ATAPI

SCSI devices have multiple kinds of queries they need to respond
to, as defined in the "cmd inquiry" section in MMC-6 and SPC-3.

Relevent sections:
MMC-6 revision 2g:
      Non-VPD response data and pointer to SPC-3;
      Section 6.8 "Inquiry Command"
SPC-3 revision 23:
      Inquiry command and error handling:
      Section 6.4 "INQUIRY command"
      VPD data pages format:
      Section 7.6 "Vital product data parameters"

We implement these Vital Product Data queries for SCSI, but not for
ATAPI through IDE. The result is that if you are looking for the WWN
identifier via tools such as sg3_utils, you will be unable to query
our CD/DVD rom device to obtain it.

This patch adds the minimum number of mandatory responses as defined
by SPC-3, which include the "supported pages" response (page 0x00)
and the "Device Identification" response (page 0x83). It also correctly
responds when it receives a request for an illegal page to improve
error output from related tools.

The Device ID page contains an arbitrary list of identification
strings of various formats; the ID strings included in this patch
were chosen to mimic those provided by the libata driver when
emulating this SCSI query (model, serial, and wwn when present.)

Example:

# libata emulated response
address@hidden ~]# sg_inq --id /dev/sda
VPD INQUIRY: Device Identification page
  Designation descriptor number 1, descriptor length: 24
    designator_type: vendor specific [0x0],  code_set: ASCII
    associated with the addressed logical unit
      vendor specific: QM00001
  Designation descriptor number 2, descriptor length: 72
    designator_type: T10 vendor identification,  code_set: ASCII
    associated with the addressed logical unit
      vendor id: ATA
      vendor specific: QEMU HARDDISK                           QM00001

# QEMU generated ATAPI response, with WWN
address@hidden ~]# sg_inq --id /dev/sr0
VPD INQUIRY: Device Identification page
  Designation descriptor number 1, descriptor length: 24
    designator_type: vendor specific [0x0],  code_set: ASCII
    associated with the addressed logical unit
      vendor specific: QM00005
  Designation descriptor number 2, descriptor length: 72
    designator_type: T10 vendor identification,  code_set: ASCII
    associated with the addressed logical unit
      vendor id: ATA
      vendor specific: QEMU DVD-ROM                            QM00005
  Designation descriptor number 3, descriptor length: 12
    designator_type: NAA,  code_set: Binary
    associated with the addressed logical unit
      NAA 5, IEEE Company_id: 0xc50
      Vendor Specific Identifier: 0x15ea71bb
      [0x5000c50015ea71bb]

See also: hw/scsi/scsi-disk.c, scsi_disk_emulate_inquiry()

Signed-off-by: John Snow <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: e7026f1953c16d1cc3e8310cc27db6acf61d9def
      
https://github.com/qemu/qemu/commit/e7026f1953c16d1cc3e8310cc27db6acf61d9def
  Author: Alex Friedman <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M hw/block/nvme.c

  Log Message:
  -----------
  nvme: Fix get/set number of queues feature

According to the specification, the low 16 bits should contain the number of
I/O submission queues, and the high 16 bits should contain the number of
I/O completion queues.

Signed-off-by: Alex Friedman <address@hidden>
Acked-by: Keith Busch <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 5734edd8372cce37c8c203b95beb03acbec72f49
      
https://github.com/qemu/qemu/commit/5734edd8372cce37c8c203b95beb03acbec72f49
  Author: Chrysostomos Nanakos <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Update email addresses for Chrysostomos Nanakos

Remove first email address and let the one from which I am contributing.

Signed-off-by: Chrysostomos Nanakos <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 47b0f45a9282aaf73231f34ca60369a12c8d8d3c
      
https://github.com/qemu/qemu/commit/47b0f45a9282aaf73231f34ca60369a12c8d8d3c
  Author: Fam Zheng <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M MAINTAINERS

  Log Message:
  -----------
  MAINTAINERS: Add migration/block* to block subsystem

We are moving block-migration.c to the separated migration directory,
keep this file watched by block maintainers is a good idea.

Signed-off-by: Fam Zheng <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: 07d31d07f4b28a61b65cec95da69851c675f20b9
      
https://github.com/qemu/qemu/commit/07d31d07f4b28a61b65cec95da69851c675f20b9
  Author: Anubhav Rakshit <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M hw/block/nvme.c

  Log Message:
  -----------
  NVMe: Set correct VS Value for 1.1 Compliant Controllers

According to NVMe specifications Bits 15:08 represent Minor Version number.

Signed-off-by: Anubhav Rakshit <address@hidden>
Signed-off-by: Stefan Hajnoczi <address@hidden>


  Commit: a00369fc565cef32076b767ecff34469642afe06
      
https://github.com/qemu/qemu/commit/a00369fc565cef32076b767ecff34469642afe06
  Author: Peter Maydell <address@hidden>
  Date:   2015-01-13 (Tue, 13 Jan 2015)

  Changed paths:
    M .gitignore
    M MAINTAINERS
    M async.c
    M block.c
    M block/backup.c
    M block/block-backend.c
    M block/mirror.c
    M block/qapi.c
    M block/vmdk.c
    M blockdev.c
    M coroutine-ucontext.c
    M hw/block/dataplane/virtio-blk.c
    M hw/block/nvme.c
    M hw/ide/atapi.c
    M hw/ide/internal.h
    M include/block/block.h
    M include/block/coroutine.h
    M include/qemu/queue.h
    M include/qemu/thread.h
    M migration/block.c
    M qapi-schema.json
    M qapi/block-core.json
    M qemu-coroutine.c
    M qmp-commands.hx
    M scripts/checkpatch.pl
    M tests/Makefile
    M tests/libqos/malloc-pc.c
    M tests/libqos/malloc-pc.h
    A tests/libqos/malloc.c
    M tests/libqos/malloc.h
    M tests/qemu-iotests-quick.sh
    M tests/qemu-iotests/055
    M tests/qemu-iotests/055.out
    M tests/qemu-iotests/058
    M tests/qemu-iotests/067
    M tests/qemu-iotests/071
    M tests/qemu-iotests/071.out
    M tests/qemu-iotests/081
    M tests/qemu-iotests/087
    M tests/qemu-iotests/087.out
    M tests/qemu-iotests/099
    A tests/qemu-iotests/110
    A tests/qemu-iotests/110.out
    M tests/qemu-iotests/check
    M tests/qemu-iotests/common.config
    M tests/qemu-iotests/common.filter
    M tests/qemu-iotests/common.rc
    M tests/qemu-iotests/group
    M tests/qemu-iotests/iotests.py
    M tests/test-coroutine.c
    M util/qemu-thread-posix.c
    M util/qemu-thread-win32.c

  Log Message:
  -----------
  Merge remote-tracking branch 'remotes/stefanha/tags/block-pull-request' into 
staging

# gpg: Signature made Tue 13 Jan 2015 13:48:06 GMT using RSA key ID 81AB73C8
# gpg: Good signature from "Stefan Hajnoczi <address@hidden>"
# gpg:                 aka "Stefan Hajnoczi <address@hidden>"

* remotes/stefanha/tags/block-pull-request: (38 commits)
  NVMe: Set correct VS Value for 1.1 Compliant Controllers
  MAINTAINERS: Add migration/block* to block subsystem
  MAINTAINERS: Update email addresses for Chrysostomos Nanakos
  nvme: Fix get/set number of queues feature
  ide: Implement VPD response for ATAPI
  block: Split BLOCK_OP_TYPE_COMMIT to BLOCK_OP_TYPE_COMMIT_{SOURCE, TARGET}
  block: limited request size in write zeroes unsupported path
  coroutine: try harder not to delete coroutines
  coroutine: drop qemu_coroutine_adjust_pool_size
  coroutine: rewrite pool to avoid mutex
  QSLIST: add lock-free operations
  test-coroutine: avoid overflow on 32-bit systems
  qemu-thread: add per-thread atexit functions
  coroutine-ucontext: use __thread
  qemu-iotests: Add supported os parameter for python tests
  qemu-iotests: Add "_supported_os Linux" to 058
  qemu-iotests: Replace "/bin/true" with "true"
  .gitignore: Ignore generated "common.env"
  libqos: Convert malloc-pc allocator to a generic allocator
  migration/block: fix pending() return value
  ...

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


Compare: https://github.com/qemu/qemu/compare/7d5ad15d17f2...a00369fc565c

reply via email to

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