All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v3 00/32] Dynamic module loading for block drivers
@ 2016-07-05 15:24 Colin Lord
  2016-07-05 15:24 ` [Qemu-devel] [PATCH v3 01/32] blockdev: prepare iSCSI block driver for dynamic loading Colin Lord
                   ` (33 more replies)
  0 siblings, 34 replies; 89+ messages in thread
From: Colin Lord @ 2016-07-05 15:24 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, qemu-block, mreitz, Colin Lord

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

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

-- 
2.5.5

^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2016-07-14 12:17 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [Qemu-devel] [Qemu-block] [PATCH v3 00/32] Dynamic module loading for block drivers John Snow
2016-07-14 12:17 ` Stefan Hajnoczi

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.