qemu-commits
[Top][All Lists]
Advanced

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

[Qemu-commits] [qemu/qemu] d4362d: blkdebug: show an error for invalid e


From: GitHub
Subject: [Qemu-commits] [qemu/qemu] d4362d: blkdebug: show an error for invalid event names
Date: Mon, 29 Sep 2014 06:30:07 -0700

  Branch: refs/heads/master
  Home:   https://github.com/qemu/qemu
  Commit: d4362d642e5cfd50671eba250b5888a89a88691a
      
https://github.com/qemu/qemu/commit/d4362d642e5cfd50671eba250b5888a89a88691a
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M block/blkdebug.c

  Log Message:
  -----------
  blkdebug: show an error for invalid event names

It is easy to typo a blkdebug configuration and waste a lot of time
figuring out why no rules are matching.

Push the Error** down into add_rule() so we can report an error when the
event name is invalid.

Signed-off-by: Stefan Hajnoczi <address@hidden>
Reviewed-by: Gonglei <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: a0f1eab157560d953e8460b066a362f034bbf717
      
https://github.com/qemu/qemu/commit/a0f1eab157560d953e8460b066a362f034bbf717
  Author: Markus Armbruster <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  blockdev: Disentangle BlockDriverState and DriveInfo creation

blockdev_init() mixes up BlockDriverState and DriveInfo initialization
Finish the BlockDriverState job before starting to mess with
DriveInfo.  Easier on the eyes.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Benoît Canet <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 3ae59580a0db469c1de72d5c58266b08fb096056
      
https://github.com/qemu/qemu/commit/3ae59580a0db469c1de72d5c58266b08fb096056
  Author: Markus Armbruster <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M block.c
    M blockdev.c
    M include/sysemu/blockdev.h
    M stubs/Makefile.objs
    A stubs/blockdev.c

  Log Message:
  -----------
  block: Keep DriveInfo alive until BlockDriverState dies

If the BDS's refcnt > 0, drive_del() destroys the DriveInfo, but not
the BDS.  This can happen in three places:

* Device model destruction during unplug: blockdev_auto_del()

* Xen IDE unplug: pci_piix3_xen_ide_unplug()

* drive_del command when no device model is attached: do_drive_del()

The other callers of drive_del are on error paths where refcnt == 1.

If the user somehow manages to plug in a device model using a BDS that
has gone through drive_del(), the legacy configuration passed in
DriveInfo doesn't reach the device model, and automatic deletion on
unplug doesn't work.  Worse, some device models such as scsi-disk
crash when DriveInfo doesn't exist.

This is theoretical; I didn't research an actual reproducer. The problem
was introduced when we replaced DriveInfo reference counting by BDS
reference counting in commit a94a3fa..fa510eb.

Fix by keeping DriveInfo alive until its BDS dies.

This affects qemu_drive_opts: now you can't reuse the same ID for new
drive options until the BDS dies.  Before, you could, but since the
code always attempts to create a BDS with the same ID next, the
enclosing operation "create a new drive" failed anyway.  Different
error path, same result.

Unfortunately, the fix involves use of blockdev.c stuff from block.c,
which is a layering violation.  Fortunately, my forthcoming
BlockBackend work will get rid of it again.

Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Benoît Canet <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: e5d7bbeb10b72888e112646ef68b1bea0e4e286d
      
https://github.com/qemu/qemu/commit/e5d7bbeb10b72888e112646ef68b1bea0e4e286d
  Author: Markus Armbruster <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M qemu-nbd.c

  Log Message:
  -----------
  qemu-nbd: Destroy the BlockDriverState properly

Match the bdrv_new() with a bdrv_unref(), just to be tidy.

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


  Commit: d224469d87140f0ab9496f752f6042606b80718b
      
https://github.com/qemu/qemu/commit/d224469d87140f0ab9496f752f6042606b80718b
  Author: Markus Armbruster <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

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

  Log Message:
  -----------
  block: Improve message for device name clashing with node name

Suggested-by: Benoit Canet <address@hidden>
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Benoît Canet <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Signed-off-by: Kevin Wolf <address@hidden>


  Commit: 247147fbc107f818630c4044931de39b89c99342
      
https://github.com/qemu/qemu/commit/247147fbc107f818630c4044931de39b89c99342
  Author: Kevin Wolf <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M blockdev.c

  Log Message:
  -----------
  block: Specify -drive legacy option aliases in array

Instead of a series of qemu_opt_rename() calls, use an array that
contains all of the renames and call qemu_opt_rename() in a loop. This
will keep the code readable even when we add an error return to
qemu_opt_rename().

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Benoît Canet <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>


  Commit: 5abbf0ee4d87c695deb1c3fca9bb994b93a3e3be
      
https://github.com/qemu/qemu/commit/5abbf0ee4d87c695deb1c3fca9bb994b93a3e3be
  Author: Kevin Wolf <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

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

  Log Message:
  -----------
  block: Catch simultaneous usage of options and their aliases

While thinking about precedence of conflicting block device options from
different sources, I noticed that you can specify both an option and its
legacy alias at the same time (e.g. readonly=on,read-only=off). Rather
than specifying the order of precedence, we should simply forbid such
combinations.

Signed-off-by: Kevin Wolf <address@hidden>
Reviewed-by: Benoît Canet <address@hidden>
Reviewed-by: Markus Armbruster <address@hidden>


  Commit: f9d7b4b3b4249336be665180a1aea7ce5497d2ca
      
https://github.com/qemu/qemu/commit/f9d7b4b3b4249336be665180a1aea7ce5497d2ca
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    A docs/blkdebug.txt

  Log Message:
  -----------
  docs: add blkdebug block driver documentation

The blkdebug block driver is undocumented.  Documenting it is worthwhile
since it offers powerful error injection features that are used by
qemu-iotests test cases.

This document will make it easier for people to learn about and use
blkdebug.

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


  Commit: a4127c428e61317b2966ec7fe480c3c6fb2d08df
      
https://github.com/qemu/qemu/commit/a4127c428e61317b2966ec7fe480c3c6fb2d08df
  Author: Stefan Hajnoczi <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M block/vpc.c

  Log Message:
  -----------
  vpc: fix beX_to_cpu() and cpu_to_beX() confusion

The beX_to_cpu() and cpu_to_beX() functions perform the same operation -
they do a byteswap if the host CPU endianness is little-endian or a
nothing otherwise.

The point of two names for the same operation is that it documents which
direction the data is being converted.  This makes it clear whether the
data is suitable for CPU processing or in its external representation.

This patch fixes incorrect beX_to_cpu()/cpu_to_beX() usage.

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


  Commit: 9aebf3b89281a173d2dfeee379b800be5e3f363e
      
https://github.com/qemu/qemu/commit/9aebf3b89281a173d2dfeee379b800be5e3f363e
  Author: Kevin Wolf <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

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

  Log Message:
  -----------
  block: Validate node-name

The device_name of a BlockDriverState is currently checked because it is
always used as a QemuOpts ID and qemu_opts_create() checks whether such
IDs are wellformed.

node-name is supposed to share the same namespace, but it isn't checked
currently. This patch adds explicit checks both for device_name and
node-name so that the same rules will still apply even if QemuOpts won't
be used any more at some point.

qemu-img used to use names with spaces in them, which isn't allowed any
more. Replace them with underscores.

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


  Commit: c9d17ad0dd3f04cdef44d58db97ea9864fbcdee7
      
https://github.com/qemu/qemu/commit/c9d17ad0dd3f04cdef44d58db97ea9864fbcdee7
  Author: Fam Zheng <address@hidden>
  Date:   2014-09-25 (Thu, 25 Sep 2014)

  Changed paths:
    M tests/qemu-iotests/common

  Log Message:
  -----------
  qemu-iotests: Fail test if explicit test case number is unknown

When we expand a number range, we just print "$id - unknown test,
ignored", this is convenient if we want to run a range of tests.

When we designate a test case number explicitly, we shouldn't just
ignore it if the case script doesn't exist.

Print an error and fail the test.

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


  Commit: 0ebcc564533454853e66cbe665a0d23bf7199834
      
https://github.com/qemu/qemu/commit/0ebcc564533454853e66cbe665a0d23bf7199834
  Author: Peter Maydell <address@hidden>
  Date:   2014-09-29 (Mon, 29 Sep 2014)

  Changed paths:
    M block.c
    M block/blkdebug.c
    M block/vpc.c
    M blockdev.c
    A docs/blkdebug.txt
    M include/qemu/option.h
    M include/sysemu/blockdev.h
    M qemu-img.c
    M qemu-nbd.c
    M stubs/Makefile.objs
    A stubs/blockdev.c
    M tests/qemu-iotests/051
    M tests/qemu-iotests/051.out
    M tests/qemu-iotests/087.out
    M tests/qemu-iotests/common
    M util/qemu-option.c

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

Block patches

# gpg: Signature made Fri 26 Sep 2014 19:57:52 BST using RSA key ID C88F2FD6
# gpg: Good signature from "Kevin Wolf <address@hidden>"

* remotes/kevin/tags/for-upstream:
  qemu-iotests: Fail test if explicit test case number is unknown
  block: Validate node-name
  vpc: fix beX_to_cpu() and cpu_to_beX() confusion
  docs: add blkdebug block driver documentation
  block: Catch simultaneous usage of options and their aliases
  block: Specify -drive legacy option aliases in array
  block: Improve message for device name clashing with node name
  qemu-nbd: Destroy the BlockDriverState properly
  block: Keep DriveInfo alive until BlockDriverState dies
  blockdev: Disentangle BlockDriverState and DriveInfo creation
  blkdebug: show an error for invalid event names

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


Compare: https://github.com/qemu/qemu/compare/e80084d352be...0ebcc5645334

reply via email to

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