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
next prev 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).