[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 00/17] block: Convert .bdrv_read/write to .bdrv_p
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH v2 00/17] block: Convert .bdrv_read/write to .bdrv_preadv/pwritev |
Date: |
Thu, 28 Apr 2016 15:16:29 +0200 |
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.
v2:
- Patch 3 ('block: Support AIO drivers in bdrv_driver_preadv/pwritev()')
Removed bdrv_co_io_em in trace-event after removing its user [Eric]
- Patch 4 ('block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev')
Fixed some indentations [Eric]
- Patches 6, 7, 8, 12 (bochs, cloop, dmg, vmdk):
Replaced returns by goto fail to fix missing unlock and qiov leaks [Stefan]
- Patch 13 ('vmdk: Implement .bdrv_co_pwritev() interface')
Use g_free() instead of free() [Stefan]
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 | 51 ++++---
block/cloop.c | 38 +++---
block/dmg.c | 40 +++---
block/io.c | 321 ++++++++++++++++++--------------------------
block/iscsi.c | 8 --
block/nbd.c | 9 --
block/raw_bsd.c | 12 +-
block/vdi.c | 127 ++++++++++--------
block/vmdk.c | 330 ++++++++++++++++++++++++++++------------------
block/vpc.c | 165 ++++++++++++-----------
block/vvfat.c | 55 ++++++--
hw/ide/macio.c | 4 +-
include/block/block_int.h | 12 +-
trace-events | 1 -
16 files changed, 629 insertions(+), 550 deletions(-)
--
1.8.3.1
- [Qemu-devel] [PATCH v2 00/17] block: Convert .bdrv_read/write to .bdrv_preadv/pwritev,
Kevin Wolf <=
- [Qemu-devel] [PATCH v2 02/17] block: Introduce bdrv_driver_pwritev(), Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 01/17] block: Introduce bdrv_driver_preadv(), Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 04/17] block: Rename bdrv_co_do_preadv/writev to bdrv_co_preadv/writev, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 03/17] block: Support AIO drivers in bdrv_driver_preadv/pwritev(), Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 09/17] vdi: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28
- [Qemu-devel] [PATCH v2 08/17] dmg: Implement .bdrv_co_preadv() interface, Kevin Wolf, 2016/04/28