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 <stefa...@redhat.com>
signature.asc
Description: PGP signature