[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [PATCH 00/17] block: Convert common I/O path to BdrvChi
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-block] [PATCH 00/17] block: Convert common I/O path to BdrvChild |
Date: |
Tue, 28 Jun 2016 14:28:19 +0100 |
User-agent: |
Mutt/1.6.1 (2016-04-27) |
On Tue, Jun 21, 2016 at 11:21:17AM +0200, Kevin Wolf wrote:
> This series converts all I/O function in the core block layer up to
> bdrv_co_preadv/pwritev() to taking a BdrvChild as their first parameter
> instead of a BlockDriverState.
>
> The original motivation for this change were op blockers, where one of
> the biggest problems is making sure that every user of block devices
> actually registers correctly with the op blockers system. If the I/O
> functions know which parent a request comes from (BdrvChild basically
> corresponds to an edge in our block device graph), it can use assertions
> to make sure that that parent has actually registered its activities and
> thereby ensured that it doesn't conflict with other users.
>
> There are, however, more benefits we get from this change. The most
> important one is probably that it enforces important aspects of the
> block layer design like that external users go through a BlockBackend
> and request are internally routed along the edges of the graph. Accesses
> to random BDSes are no longer possible, you need to own an actual child
> reference so you can make a request.
>
> The work on this series already led to a few cleanups and BlockBackend
> conversions in master, and this series contains a few more.
>
> As a bonus, all the block drivers using bs->file->bs everywhere can now
> go back to bs->file, which is a little nicer to read.
>
> Kevin Wolf (17):
> vvfat: Use BdrvChild for s->qcow
> blkreplay: Convert to byte-based I/O
> vhdx: Some more BlockBackend use in vhdx_create()
> block: Convert bdrv_co_readv() to BdrvChild
> block: Convert bdrv_co_writev() to BdrvChild
> block: Convert bdrv_aio_readv() to BdrvChild
> block: Convert bdrv_aio_writev() to BdrvChild
> block: Convert bdrv_co_do_readv/writev to BdrvChild
> block: Move bdrv_commit() to block/commit.c
> block: Use BlockBackend for I/O in bdrv_commit()
> block: Convert bdrv_read() to BdrvChild
> block: Convert bdrv_write() to BdrvChild
> block: Convert bdrv_pread(v) to BdrvChild
> block: Convert bdrv_pwrite(v/_sync) to BdrvChild
> block: Convert bdrv_pwrite_zeroes() to BdrvChild
> block: Convert bdrv_prwv_co() to BdrvChild
> block: Convert bdrv_co_preadv/pwritev to BdrvChild
>
> block.c | 117 ++----------------------------------
> block/Makefile.objs | 3 +-
> block/blkdebug.c | 4 +-
> block/blkreplay.c | 18 +++---
> block/blkverify.c | 8 +--
> block/block-backend.c | 9 ++-
> block/bochs.c | 8 +--
> block/cloop.c | 8 +--
> block/commit.c | 121 +++++++++++++++++++++++++++++++++++++
> block/crypto.c | 6 +-
> block/dmg.c | 21 +++----
> block/io.c | 132
> ++++++++++++++++++++++-------------------
> block/parallels.c | 16 ++---
> block/qcow.c | 41 +++++++------
> block/qcow2-cache.c | 4 +-
> block/qcow2-cluster.c | 18 +++---
> block/qcow2-refcount.c | 36 +++++------
> block/qcow2-snapshot.c | 26 ++++----
> block/qcow2.c | 50 +++++++++-------
> block/qed-table.c | 4 +-
> block/qed.c | 22 +++----
> block/quorum.c | 8 +--
> block/raw_bsd.c | 6 +-
> block/vdi.c | 14 ++---
> block/vhdx-log.c | 12 ++--
> block/vhdx.c | 85 ++++++++++++++------------
> block/vmdk.c | 54 ++++++++---------
> block/vpc.c | 24 ++++----
> block/vvfat.c | 61 ++++++++++++-------
> include/block/block.h | 38 ++++++------
> include/block/block_int.h | 4 +-
> include/sysemu/block-backend.h | 1 +
> qemu-img.c | 2 +-
> 33 files changed, 522 insertions(+), 459 deletions(-)
Do you want to take it through your tree to avoid
conflicts/dependencies?
Acked-by: Stefan Hajnoczi <address@hidden>
signature.asc
Description: PGP signature
- [Qemu-block] [PATCH 17/17] block: Convert bdrv_co_preadv/pwritev to BdrvChild, (continued)
Re: [Qemu-block] [PATCH 00/17] block: Convert common I/O path to BdrvChild,
Stefan Hajnoczi <=