qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/17] block: Convert .bdrv_read/write to .bdrv_preadv/pwritev
@ 2016-04-27  9:52 Kevin Wolf
  2016-04-27  9:52 ` [Qemu-devel] [PATCH 01/17] block: Introduce bdrv_driver_preadv() Kevin Wolf
                   ` (17 more replies)
  0 siblings, 18 replies; 34+ messages in thread
From: Kevin Wolf @ 2016-04-27  9:52 UTC (permalink / raw)
  To: qemu-block; +Cc: kwolf, mreitz, stefanha, famz, sw, qemu-devel

This series introduces a new BlockDriver interface, which will hopefully be the
final one, or at least good enough for another few years: .bdrv_preadv/pwritev.
It is based on coroutines, vectored, has flags and uses a byte granularity.
This is now the preferred interface for new drivers.

All drivers still using the legacy interface .bdrv_read/write are converted to
the new interface and the emulation code we had for the old interface is
removed. Most of the drivers become zero-copy with these patches as they are
vectored now; only vvfat continues to allocate a bounce buffer.

The less obscure formats (vmdk, vdi, vpc) also natively support byte-aligned
requests now. The block layer is still enforcing a minimal alignment of 512, so
this isn't actually used yet, but in a next step, we can lift this restriction
for drivers that implement .bdrv_preadv/pwritev.

Kevin Wolf (17):
  block: Introduce bdrv_driver_preadv()
  block: Introduce bdrv_driver_pwritev()
  block: Support AIO drivers in bdrv_driver_preadv/pwritev()
  block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev
  block: Introduce .bdrv_co_preadv/pwritev BlockDriver function
  bochs: Implement .bdrv_co_preadv() interface
  cloop: Implement .bdrv_co_preadv() interface
  dmg: Implement .bdrv_co_preadv() interface
  vdi: Implement .bdrv_co_preadv() interface
  vdi: Implement .bdrv_co_pwritev() interface
  vmdk: Add vmdk_find_offset_in_cluster()
  vmdk: Implement .bdrv_co_preadv() interface
  vmdk: Implement .bdrv_co_pwritev() interface
  vpc: Implement .bdrv_co_preadv() interface
  vpc: Implement .bdrv_co_pwritev() interface
  vvfat: Implement .bdrv_co_preadv/pwritev interfaces
  block: Remove BlockDriver.bdrv_read/write

 block.c                   |   2 -
 block/block-backend.c     |   4 +-
 block/bochs.c             |  46 ++++---
 block/cloop.c             |  33 ++---
 block/dmg.c               |  36 +++---
 block/io.c                | 317 +++++++++++++++++++--------------------------
 block/iscsi.c             |   8 --
 block/nbd.c               |   9 --
 block/raw_bsd.c           |  12 +-
 block/vdi.c               | 127 ++++++++++--------
 block/vmdk.c              | 320 ++++++++++++++++++++++++++++------------------
 block/vpc.c               | 165 ++++++++++++------------
 block/vvfat.c             |  55 ++++++--
 hw/ide/macio.c            |   4 +-
 include/block/block_int.h |  12 +-
 15 files changed, 609 insertions(+), 541 deletions(-)

-- 
1.8.3.1

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

end of thread, other threads:[~2016-04-28  8:42 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-27  9:52 [Qemu-devel] [PATCH 00/17] block: Convert .bdrv_read/write to .bdrv_preadv/pwritev Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 01/17] block: Introduce bdrv_driver_preadv() Kevin Wolf
2016-04-27 13:52   ` Eric Blake
2016-04-27  9:52 ` [Qemu-devel] [PATCH 02/17] block: Introduce bdrv_driver_pwritev() Kevin Wolf
2016-04-27 14:03   ` Eric Blake
2016-04-27  9:52 ` [Qemu-devel] [PATCH 03/17] block: Support AIO drivers in bdrv_driver_preadv/pwritev() Kevin Wolf
2016-04-27 14:13   ` Eric Blake
2016-04-27  9:52 ` [Qemu-devel] [PATCH 04/17] block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev Kevin Wolf
2016-04-27 14:34   ` Eric Blake
2016-04-27 14:40     ` Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 05/17] block: Introduce .bdrv_co_preadv/pwritev BlockDriver function Kevin Wolf
2016-04-27 15:44   ` Eric Blake
2016-04-27  9:52 ` [Qemu-devel] [PATCH 06/17] bochs: Implement .bdrv_co_preadv() interface Kevin Wolf
2016-04-27 14:06   ` Stefan Hajnoczi
2016-04-27 14:33     ` Kevin Wolf
2016-04-27 15:51   ` Eric Blake
2016-04-28  8:21     ` Kevin Wolf
2016-04-28  8:42       ` Markus Armbruster
2016-04-27  9:52 ` [Qemu-devel] [PATCH 07/17] cloop: " Kevin Wolf
2016-04-27 14:12   ` Stefan Hajnoczi
2016-04-27  9:52 ` [Qemu-devel] [PATCH 08/17] dmg: " Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 09/17] vdi: " Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 10/17] vdi: Implement .bdrv_co_pwritev() interface Kevin Wolf
2016-04-27 14:17   ` Stefan Hajnoczi
2016-04-27 14:36     ` Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 11/17] vmdk: Add vmdk_find_offset_in_cluster() Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 12/17] vmdk: Implement .bdrv_co_preadv() interface Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 13/17] vmdk: Implement .bdrv_co_pwritev() interface Kevin Wolf
2016-04-27 14:21   ` Stefan Hajnoczi
2016-04-27  9:52 ` [Qemu-devel] [PATCH 14/17] vpc: Implement .bdrv_co_preadv() interface Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 15/17] vpc: Implement .bdrv_co_pwritev() interface Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 16/17] vvfat: Implement .bdrv_co_preadv/pwritev interfaces Kevin Wolf
2016-04-27  9:52 ` [Qemu-devel] [PATCH 17/17] block: Remove BlockDriver.bdrv_read/write Kevin Wolf
2016-04-27 14:26 ` [Qemu-devel] [PATCH 00/17] block: Convert .bdrv_read/write to .bdrv_preadv/pwritev Stefan Hajnoczi

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