mirror of https://github.com/proxmox/mirror_qemu
block: Convert bdrv_co_writev() to BdrvChild
Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Max Reitz <mreitz@redhat.com> Acked-by: Stefan Hajnoczi <stefanha@redhat.com>master
parent
28b04a8f65
commit
25ec177d90
|
@ -507,7 +507,7 @@ block_crypto_co_writev(BlockDriverState *bs, int64_t sector_num,
|
||||||
qemu_iovec_reset(&hd_qiov);
|
qemu_iovec_reset(&hd_qiov);
|
||||||
qemu_iovec_add(&hd_qiov, cipher_data, cur_nr_sectors * 512);
|
qemu_iovec_add(&hd_qiov, cipher_data, cur_nr_sectors * 512);
|
||||||
|
|
||||||
ret = bdrv_co_writev(bs->file->bs,
|
ret = bdrv_co_writev(bs->file,
|
||||||
payload_offset + sector_num,
|
payload_offset + sector_num,
|
||||||
cur_nr_sectors, &hd_qiov);
|
cur_nr_sectors, &hd_qiov);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
|
|
|
@ -1547,12 +1547,12 @@ static int coroutine_fn bdrv_co_do_writev(BlockDriverState *bs,
|
||||||
nb_sectors << BDRV_SECTOR_BITS, qiov, flags);
|
nb_sectors << BDRV_SECTOR_BITS, qiov, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
|
int coroutine_fn bdrv_co_writev(BdrvChild *child, int64_t sector_num,
|
||||||
int nb_sectors, QEMUIOVector *qiov)
|
int nb_sectors, QEMUIOVector *qiov)
|
||||||
{
|
{
|
||||||
trace_bdrv_co_writev(bs, sector_num, nb_sectors);
|
trace_bdrv_co_writev(child->bs, sector_num, nb_sectors);
|
||||||
|
|
||||||
return bdrv_co_do_writev(bs, sector_num, nb_sectors, qiov, 0);
|
return bdrv_co_do_writev(child->bs, sector_num, nb_sectors, qiov, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int coroutine_fn bdrv_co_pwrite_zeroes(BlockDriverState *bs,
|
int coroutine_fn bdrv_co_pwrite_zeroes(BlockDriverState *bs,
|
||||||
|
|
|
@ -311,7 +311,7 @@ static coroutine_fn int parallels_co_writev(BlockDriverState *bs,
|
||||||
qemu_iovec_reset(&hd_qiov);
|
qemu_iovec_reset(&hd_qiov);
|
||||||
qemu_iovec_concat(&hd_qiov, qiov, bytes_done, nbytes);
|
qemu_iovec_concat(&hd_qiov, qiov, bytes_done, nbytes);
|
||||||
|
|
||||||
ret = bdrv_co_writev(bs->file->bs, position, n, &hd_qiov);
|
ret = bdrv_co_writev(bs->file, position, n, &hd_qiov);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -745,7 +745,7 @@ static coroutine_fn int qcow_co_writev(BlockDriverState *bs, int64_t sector_num,
|
||||||
hd_iov.iov_len = n * 512;
|
hd_iov.iov_len = n * 512;
|
||||||
qemu_iovec_init_external(&hd_qiov, &hd_iov, 1);
|
qemu_iovec_init_external(&hd_qiov, &hd_iov, 1);
|
||||||
qemu_co_mutex_unlock(&s->lock);
|
qemu_co_mutex_unlock(&s->lock);
|
||||||
ret = bdrv_co_writev(bs->file->bs,
|
ret = bdrv_co_writev(bs->file,
|
||||||
(cluster_offset >> 9) + index_in_cluster,
|
(cluster_offset >> 9) + index_in_cluster,
|
||||||
n, &hd_qiov);
|
n, &hd_qiov);
|
||||||
qemu_co_mutex_lock(&s->lock);
|
qemu_co_mutex_lock(&s->lock);
|
||||||
|
|
|
@ -1326,7 +1326,7 @@ static coroutine_fn int vhdx_co_writev(BlockDriverState *bs, int64_t sector_num,
|
||||||
}
|
}
|
||||||
/* block exists, so we can just overwrite it */
|
/* block exists, so we can just overwrite it */
|
||||||
qemu_co_mutex_unlock(&s->lock);
|
qemu_co_mutex_unlock(&s->lock);
|
||||||
ret = bdrv_co_writev(bs->file->bs,
|
ret = bdrv_co_writev(bs->file,
|
||||||
sinfo.file_offset >> BDRV_SECTOR_BITS,
|
sinfo.file_offset >> BDRV_SECTOR_BITS,
|
||||||
sectors_to_write, &hd_qiov);
|
sectors_to_write, &hd_qiov);
|
||||||
qemu_co_mutex_lock(&s->lock);
|
qemu_co_mutex_lock(&s->lock);
|
||||||
|
|
|
@ -243,8 +243,8 @@ int bdrv_pwrite_sync(BlockDriverState *bs, int64_t offset,
|
||||||
const void *buf, int count);
|
const void *buf, int count);
|
||||||
int coroutine_fn bdrv_co_readv(BdrvChild *child, int64_t sector_num,
|
int coroutine_fn bdrv_co_readv(BdrvChild *child, int64_t sector_num,
|
||||||
int nb_sectors, QEMUIOVector *qiov);
|
int nb_sectors, QEMUIOVector *qiov);
|
||||||
int coroutine_fn bdrv_co_writev(BlockDriverState *bs, int64_t sector_num,
|
int coroutine_fn bdrv_co_writev(BdrvChild *child, int64_t sector_num,
|
||||||
int nb_sectors, QEMUIOVector *qiov);
|
int nb_sectors, QEMUIOVector *qiov);
|
||||||
/*
|
/*
|
||||||
* Efficiently zero a region of the disk image. Note that this is a regular
|
* Efficiently zero a region of the disk image. Note that this is a regular
|
||||||
* I/O request like read or write and should have a reasonable size. This
|
* I/O request like read or write and should have a reasonable size. This
|
||||||
|
|
Loading…
Reference in New Issue