aboutsummaryrefslogtreecommitdiff
path: root/block/vmdk.c
diff options
context:
space:
mode:
authorKevin Wolf <kwolf@redhat.com>2016-06-20 21:31:46 +0200
committerKevin Wolf <kwolf@redhat.com>2016-07-05 16:46:27 +0200
commita03ef88f77af045a2eb9629b5ce774a3fb973c5e (patch)
treeeb38df63cf3b067a09f27681fa9ef55a1988776d /block/vmdk.c
parente293b7a3dff232ddf71e92ea88961b597586911e (diff)
downloadqemu-a03ef88f77af045a2eb9629b5ce774a3fb973c5e.zip
qemu-a03ef88f77af045a2eb9629b5ce774a3fb973c5e.tar.gz
qemu-a03ef88f77af045a2eb9629b5ce774a3fb973c5e.tar.bz2
block: Convert bdrv_co_preadv/pwritev to BdrvChild
This is the final patch for converting the common I/O path to take a BdrvChild parameter instead of BlockDriverState. The completion of this conversion means that all users that perform I/O on an image need to actually hold a reference (in the form of BdrvChild, possible as part of a BlockBackend) to that image. This also protects against inconsistent use of BlockBackend vs. BlockDriverState functions because direct use of a BlockDriverState isn't possible any more and blk->root is private for block-backends.c. In addition, we can now distinguish different users in the I/O path, and the future op blockers work is going to add assertions based on permissions stored in BdrvChild. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'block/vmdk.c')
-rw-r--r--block/vmdk.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/block/vmdk.c b/block/vmdk.c
index ae70b63..d73f431 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -1369,7 +1369,7 @@ static int vmdk_write_extent(VmdkExtent *extent, int64_t cluster_offset,
}
write_offset = cluster_offset + offset_in_cluster,
- ret = bdrv_co_pwritev(extent->file->bs, write_offset, n_bytes,
+ ret = bdrv_co_pwritev(extent->file, write_offset, n_bytes,
&local_qiov, 0);
write_end_sector = DIV_ROUND_UP(write_offset + n_bytes, BDRV_SECTOR_SIZE);
@@ -1407,7 +1407,7 @@ static int vmdk_read_extent(VmdkExtent *extent, int64_t cluster_offset,
if (!extent->compressed) {
- ret = bdrv_co_preadv(extent->file->bs,
+ ret = bdrv_co_preadv(extent->file,
cluster_offset + offset_in_cluster, bytes,
qiov, 0);
if (ret < 0) {
@@ -1497,7 +1497,7 @@ vmdk_co_preadv(BlockDriverState *bs, uint64_t offset, uint64_t bytes,
qemu_iovec_reset(&local_qiov);
qemu_iovec_concat(&local_qiov, qiov, bytes_done, n_bytes);
- ret = bdrv_co_preadv(bs->backing->bs, offset, n_bytes,
+ ret = bdrv_co_preadv(bs->backing, offset, n_bytes,
&local_qiov, 0);
if (ret < 0) {
goto fail;