[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading fo
From: |
John Snow |
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 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.1.1 |
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
- Re: [Qemu-devel] [PATCH v3 17/32] blockdev: Separate bochs probe from its driver, (continued)
[Qemu-devel] [PATCH v3 22/32] blockdev: Separate qcow probe from its driver, Colin Lord, 2016/07/05
[Qemu-devel] [PATCH v3 21/32] blockdev: Separate parallels probe from its driver, Colin Lord, 2016/07/05
[Qemu-devel] [PATCH v3 27/32] blockdev: Separate vhdx probe from its driver, Colin Lord, 2016/07/05
[Qemu-devel] [PATCH v3 25/32] blockdev: Separate raw probe from its driver, Colin Lord, 2016/07/05
Re: [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers,
John Snow <=
Re: [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers, Stefan Hajnoczi, 2016/07/14