qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: Colin Lord <clord@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, qemu-block@nongnu.org, mreitz@redhat.com
Subject: Re: [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers
Date: Thu, 7 Jul 2016 16:01:12 -0400	[thread overview]
Message-ID: <7301c39b-611a-4a77-e33a-f27231412ead@redhat.com> (raw)
In-Reply-To: <1467732272-23368-1-git-send-email-clord@redhat.com>



On 07/05/2016 11:24 AM, Colin Lord wrote:
> This is the next version of this patch series. The first three patches
> in the series are mostly the same as they were last time, but with the
> issues mentioned in the reviews fixed. Most notably this means much less
> copy-paste happening in block.c.
> 
> The new changes, and the reason this series is so large, is a result of
> isolating the block driver probe functions from the rest of the drivers.
> This was mentioned in the reviews from the last version as something
> that should be added. This allows the probes to be accessed without
> needing to load all the modules. There are quite a few probes, which is
> why there are so many patches in this series. I tried to keep the
> patches where I was relocating the code separate from the patches where
> the probe function signatures were changed.
> 
> The probe functions now return both a score and a format/protocol name,
> which allows them to be completely separate from the drivers they
> correspond to. I didn't put all the probe functions in the same file as
> Fam suggested because it turns out there are some naming conflicts
> between some macros commonly used in the probe functions. For instance,
> QCowHeader is used in both qcow and qcow2 probes, but the meaning is
> different between them. Having separate files makes resolving these
> conflicts simple.
> 
> Also, just as a point of interest, I've done some basic profiling of my
> own to see what performance benefits there are to be made. I recorded
> the time to main of each option that you can enable/disable in the
> configuration by enabling each option by itself while explicitly
> disabling all other options. With each configuration I ran qemu 5 times
> while recording the time to main. All the results are in milliseconds.
> 
> minimal config      2.772
> vhdx                2.776
> attr                2.786
> coroutine-pool      2.836
> bzip                2.856
> linux-aio           2.867
> vnc-jpeg            2.872
> snappy              2.875
> fdt                 2.888
> brlapi              2.916
> vhost-net           2.922
> bluez               2.937
> cap-ng              2.940
> libiscsi            2.945
> nettle              2.945
> seccomp             2.973
> numa                2.983
> lzo                 2.994
> usb-redir           3.005
> cocoa               3.007
> libnfs              3.026
> vnc-sasl            3.071
> vnc-png             3.081
> virtfs              3.081
> uuid                3.086
> tpm                 3.136
> curses              3.145
> gcrypt              3.190
> smartcar            3.242
> rdma                3.570
> jemalloc            3.584
> glusterfs           3.597
> sdl                 3.677
> libusb              3.758
> libssh2             3.906
> tcmalloc            3.959
> xen                 4.151
> xen-pci-passthrough 4.167
> curl                5.245
> spice               5.289
> gnutls              5.400
> gtk                 8.782
> vte                 9.764
> rbd                 44.315
> 

Right around here is probably a pretty good place to include the
patchset changelog.

For larger series like this, you *may* also want to call on a script
written by Jeff Cody[1] to produce a patchset changelog. It works pretty
well in conjunction with git-publish[2].

(Not everybody does this. In fact, mostly just Max and I do. (You still
need at least a hand-written changelog, though.))

Using it is at your discretion, it can be useful at times.
Take a look at Max's series "[Qemu-devel] [PATCH v3 for-2.7 00/14] qapi:
Allow blockdev-add for NBD" for a good example [3].

the script git-backport-diff is usually used to check differences in a
series between an upstream and downstream version of a series, but it
can also be used to compare a v3 against a v2.

> Colin Lord (30):
>   blockdev: prepare iSCSI block driver for dynamic loading
>   blockdev: Move bochs probe into separate file
>   blockdev: Move cloop probe to its own file
>   blockdev: Move luks probe to its own file
>   blockdev: Move dmg probe to its own file
>   blockdev: Move parallels probe to its own file
>   blockdev: Move qcow probe to its own file
>   blockdev: Move qcow2 probe to its own file
>   blockdev: Move qed probe to its own file
>   blockdev: Move raw probe to its own file
>   blockdev: Move vdi probe to its own file
>   blockdev: Move vhdx probe to its own file
>   blockdev: Move vmdk probe to its own file
>   blockdev: Move vpc probe to its own file
>   blockdev: Separate bochs probe from its driver
>   blockdev: Separate cloop probe from its driver
>   blockdev: Separate luks probe from its driver
>   blockdev: Separate dmg probe from its driver
>   blockdev: Separate parallels probe from its driver
>   blockdev: Separate qcow probe from its driver
>   blockdev: Separate qcow2 probe from its driver
>   blockdev: Separate qed probe from its driver
>   blockdev: Separate raw probe from its driver
>   blockdev: Separate vdi probe from its driver
>   blockdev: Separate vhdx probe from its driver
>   blockdev: Separate vmdk probe from its driver
>   blockdev: Separate vpc probe from its driver
>   blockdev: Remove the .bdrv_probe field from BlockDrivers
>   blockdev: Separate out bdrv_probe_device functions
>   blockdev: Remove bdrv_probe_device field from BlockDriver
> 
> Marc Mari (2):
>   blockdev: Add dynamic generation of module_block.h
>   blockdev: Add dynamic module loading for block drivers
> 
>  Makefile                         |   7 ++
>  block.c                          | 181 +++++++++++++++++++++++++++++++--------
>  block/Makefile.objs              |   4 +
>  block/bochs.c                    |  56 +-----------
>  block/cloop.c                    |  17 +---
>  block/crypto.c                   |  22 +----
>  block/dmg.c                      |  17 +---
>  block/iscsi.c                    |  36 --------
>  block/parallels.c                |  44 +---------
>  block/probe/bochs.c              |  28 ++++++
>  block/probe/cloop.c              |  22 +++++
>  block/probe/dmg.c                |  22 +++++
>  block/probe/host_cdrom.c         |  47 ++++++++++
>  block/probe/host_device.c        |  42 +++++++++
>  block/probe/luks.c               |  26 ++++++
>  block/probe/parallels.c          |  26 ++++++
>  block/probe/qcow.c               |  22 +++++
>  block/probe/qcow2.c              |  22 +++++
>  block/probe/qed.c                |  24 ++++++
>  block/probe/raw.c                |  14 +++
>  block/probe/vdi.c                |  29 +++++++
>  block/probe/vhdx.c               |  27 ++++++
>  block/probe/vmdk.c               |  67 +++++++++++++++
>  block/probe/vpc.c                |  16 ++++
>  block/qcow.c                     |  32 +------
>  block/qcow2.c                    |  14 +--
>  block/qed.c                      |  16 +---
>  block/raw-posix.c                |  55 +-----------
>  block/raw-win32.c                |  11 +--
>  block/raw_bsd.c                  |  10 +--
>  block/vdi.c                      |  70 +--------------
>  block/vhdx.c                     |  21 +----
>  block/vmdk.c                     |  61 +------------
>  block/vpc.c                      |   9 +-
>  include/block/block_int.h        |   3 -
>  include/block/driver/bochs.h     |  40 +++++++++
>  include/block/driver/parallels.h |  26 ++++++
>  include/block/driver/qcow.h      |  21 +++++
>  include/block/driver/vdi.h       |  49 +++++++++++
>  include/block/driver/vmdk.h      |   7 ++
>  include/block/probe.h            |  33 +++++++
>  include/qemu/module.h            |   3 +
>  scripts/modules/module_block.py  | 108 +++++++++++++++++++++++
>  util/module.c                    |  38 +++-----
>  vl.c                             |  38 ++++++++
>  45 files changed, 948 insertions(+), 535 deletions(-)
>  create mode 100644 block/probe/bochs.c
>  create mode 100644 block/probe/cloop.c
>  create mode 100644 block/probe/dmg.c
>  create mode 100644 block/probe/host_cdrom.c
>  create mode 100644 block/probe/host_device.c
>  create mode 100644 block/probe/luks.c
>  create mode 100644 block/probe/parallels.c
>  create mode 100644 block/probe/qcow.c
>  create mode 100644 block/probe/qcow2.c
>  create mode 100644 block/probe/qed.c
>  create mode 100644 block/probe/raw.c
>  create mode 100644 block/probe/vdi.c
>  create mode 100644 block/probe/vhdx.c
>  create mode 100644 block/probe/vmdk.c
>  create mode 100644 block/probe/vpc.c
>  create mode 100644 include/block/driver/bochs.h
>  create mode 100644 include/block/driver/parallels.h
>  create mode 100644 include/block/driver/qcow.h
>  create mode 100644 include/block/driver/vdi.h
>  create mode 100644 include/block/driver/vmdk.h
>  create mode 100644 include/block/probe.h
>  create mode 100644 scripts/modules/module_block.py
> 

[1] https://github.com/codyprime/git-scripts
[2] https://github.com/stefanha/git-publish
[3] https://lists.gnu.org/archive/html/qemu-devel/2016-04/msg01048.html

  parent reply	other threads:[~2016-07-07 20:01 UTC|newest]

Thread overview: 89+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-05 15:24 [Qemu-devel] [PATCH v3 00/32] Dynamic module loading for block drivers Colin Lord
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 01/32] blockdev: prepare iSCSI block driver for dynamic loading Colin Lord
2016-07-06  2:41   ` Fam Zheng
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 02/32] blockdev: Add dynamic generation of module_block.h Colin Lord
2016-07-06 13:17   ` Max Reitz
2016-07-06 16:49     ` Colin Lord
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 03/32] blockdev: Add dynamic module loading for block drivers Colin Lord
2016-07-06 14:01   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 04/32] blockdev: Move bochs probe into separate file Colin Lord
2016-07-05 15:49   ` Daniel P. Berrange
2016-07-05 20:50     ` [Qemu-devel] [Qemu-block] " John Snow
2016-07-05 21:00       ` Max Reitz
2016-07-05 21:12         ` John Snow
2016-07-06 12:39           ` Max Reitz
2016-07-06  8:24       ` Kevin Wolf
2016-07-06 16:09         ` John Snow
2016-07-07  6:36           ` Markus Armbruster
2016-07-07 15:45             ` John Snow
2016-07-07 16:01           ` [Qemu-devel] " Paolo Bonzini
2016-07-07 16:14             ` John Snow
2016-07-08  9:31             ` Kevin Wolf
2016-07-07 20:32         ` [Qemu-devel] [Qemu-block] " Colin Lord
2016-07-08  9:37           ` Kevin Wolf
2016-07-08  7:17         ` Markus Armbruster
2016-07-07 15:59       ` [Qemu-devel] " Paolo Bonzini
2016-07-06 14:19   ` Max Reitz
2016-07-06 15:41     ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 05/32] blockdev: Move cloop probe to its own file Colin Lord
2016-07-06 14:33   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 06/32] blockdev: Move luks " Colin Lord
2016-07-05 15:50   ` Daniel P. Berrange
2016-07-06 14:36   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 07/32] blockdev: Move dmg " Colin Lord
2016-07-06 14:39   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 08/32] blockdev: Move parallels " Colin Lord
2016-07-06 14:46   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 09/32] blockdev: Move qcow " Colin Lord
2016-07-06 14:49   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 10/32] blockdev: Move qcow2 " Colin Lord
2016-07-06 14:50   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 11/32] blockdev: Move qed " Colin Lord
2016-07-06 15:16   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 12/32] blockdev: Move raw " Colin Lord
2016-07-06 15:17   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 13/32] blockdev: Move vdi " Colin Lord
2016-07-06 15:21   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 14/32] blockdev: Move vhdx " Colin Lord
2016-07-06 15:22   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 15/32] blockdev: Move vmdk " Colin Lord
2016-07-06 15:27   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 16/32] blockdev: Move vpc " Colin Lord
2016-07-06 15:29   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 17/32] blockdev: Separate bochs probe from its driver Colin Lord
2016-07-06 15:43   ` Max Reitz
2016-07-06 15:59   ` Max Reitz
2016-07-07 14:56     ` Colin Lord
2016-07-08  9:57       ` Kevin Wolf
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 18/32] blockdev: Separate cloop " Colin Lord
2016-07-06 16:00   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 19/32] blockdev: Separate luks " Colin Lord
2016-07-06 16:03   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 20/32] blockdev: Separate dmg " Colin Lord
2016-07-06 16:05   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 21/32] blockdev: Separate parallels " Colin Lord
2016-07-06 16:08   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 22/32] blockdev: Separate qcow " Colin Lord
2016-07-06 16:09   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 23/32] blockdev: Separate qcow2 " Colin Lord
2016-07-06 16:10   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 24/32] blockdev: Separate qed " Colin Lord
2016-07-06 16:11   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 25/32] blockdev: Separate raw " Colin Lord
2016-07-06 16:11   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 26/32] blockdev: Separate vdi " Colin Lord
2016-07-06 16:12   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 27/32] blockdev: Separate vhdx " Colin Lord
2016-07-06 16:12   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 28/32] blockdev: Separate vmdk " Colin Lord
2016-07-06 16:13   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 29/32] blockdev: Separate vpc " Colin Lord
2016-07-06 16:14   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 30/32] blockdev: Remove the .bdrv_probe field from BlockDrivers Colin Lord
2016-07-06 16:17   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 31/32] blockdev: Separate out bdrv_probe_device functions Colin Lord
2016-07-06 16:29   ` Max Reitz
2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 32/32] blockdev: Remove bdrv_probe_device field from BlockDriver Colin Lord
2016-07-06 16:44   ` Max Reitz
2016-07-07 20:01 ` John Snow [this message]
2016-07-14 12:17 ` [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7301c39b-611a-4a77-e33a-f27231412ead@redhat.com \
    --to=jsnow@redhat.com \
    --cc=clord@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).