We are gradually moving away from sector-based interfaces, towards
byte-based. Make the change for the last few sector-based calls
into the block layer from the parallels driver.
Ideally, the parallels driver should switch to doing everything
byte-based, but that's a more invasive change that requires a
bit more auditing.
Signed-off-by: Eric Blake <eblake@redhat.com>
---
block/parallels.c | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/block/parallels.c b/block/parallels.c
index 3f74fcb877a..c071c7f759f 100644
--- a/block/parallels.c
+++ b/block/parallels.c
@@ -226,14 +226,15 @@ static int64_t allocate_clusters(BlockDriverState *bs, int64_t sector_num,
};
qemu_iovec_init_external(&qiov, &iov, 1);
- ret = bdrv_co_readv(bs->backing, idx * s->tracks, nb_cow_sectors,
- &qiov);
+ ret = bdrv_co_preadv(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE,
+ nb_cow_bytes, &qiov, 0);
if (ret < 0) {
qemu_vfree(iov.iov_base);
return ret;
}
- ret = bdrv_co_writev(bs->file, s->data_end, nb_cow_sectors, &qiov);
+ ret = bdrv_co_pwritev(bs->file, s->data_end * BDRV_SECTOR_SIZE,
+ nb_cow_bytes, &qiov, 0);
qemu_vfree(iov.iov_base);
if (ret < 0) {
return ret;
@@ -339,7 +340,8 @@ static coroutine_fn int parallels_co_writev(BlockDriverState *bs,
qemu_iovec_reset(&hd_qiov);
qemu_iovec_concat(&hd_qiov, qiov, bytes_done, nbytes);
- ret = bdrv_co_writev(bs->file, position, n, &hd_qiov);
+ ret = bdrv_co_pwritev(bs->file, position * BDRV_SECTOR_SIZE, nbytes,
+ &hd_qiov, 0);
if (ret < 0) {
break;
}
@@ -378,7 +380,8 @@ static coroutine_fn int parallels_co_readv(BlockDriverState *bs,
if (position < 0) {
if (bs->backing) {
- ret = bdrv_co_readv(bs->backing, sector_num, n, &hd_qiov);
+ ret = bdrv_co_preadv(bs->backing, sector_num * BDRV_SECTOR_SIZE,
+ nbytes, &hd_qiov, 0);
if (ret < 0) {
break;
}
@@ -386,7 +389,8 @@ static coroutine_fn int parallels_co_readv(BlockDriverState *bs,
qemu_iovec_memset(&hd_qiov, 0, 0, nbytes);
}
} else {
- ret = bdrv_co_readv(bs->file, position, n, &hd_qiov);
+ ret = bdrv_co_preadv(bs->file, position * BDRV_SECTOR_SIZE, nbytes,
+ &hd_qiov, 0);
if (ret < 0) {
break;
}
--
2.14.3
On 04/25/2018 02:32 PM, Eric Blake wrote: > We are gradually moving away from sector-based interfaces, towards > byte-based. Make the change for the last few sector-based calls > into the block layer from the parallels driver. > > Ideally, the parallels driver should switch to doing everything > byte-based, but that's a more invasive change that requires a > bit more auditing. > > Signed-off-by: Eric Blake <eblake@redhat.com> Older than a month, so I'm assuming this is dropped for now. --js
On 05/23/2018 02:19 PM, John Snow wrote: > > > On 04/25/2018 02:32 PM, Eric Blake wrote: >> We are gradually moving away from sector-based interfaces, towards >> byte-based. Make the change for the last few sector-based calls >> into the block layer from the parallels driver. >> >> Ideally, the parallels driver should switch to doing everything >> byte-based, but that's a more invasive change that requires a >> bit more auditing. >> >> Signed-off-by: Eric Blake <eblake@redhat.com> > > Older than a month, so I'm assuming this is dropped for now. No, it's still awaiting a review; and still applies without any context changes. -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
On 05/23/2018 04:09 PM, Eric Blake wrote: > On 05/23/2018 02:19 PM, John Snow wrote: >> >> >> On 04/25/2018 02:32 PM, Eric Blake wrote: >>> We are gradually moving away from sector-based interfaces, towards >>> byte-based. Make the change for the last few sector-based calls >>> into the block layer from the parallels driver. >>> >>> Ideally, the parallels driver should switch to doing everything >>> byte-based, but that's a more invasive change that requires a >>> bit more auditing. >>> >>> Signed-off-by: Eric Blake <eblake@redhat.com> >> >> Older than a month, so I'm assuming this is dropped for now. > > No, it's still awaiting a review; and still applies without any context > changes. Oh, OK! then I'll count this as my naive ping-by-proxy. --js
On Wed, Apr 25, 2018 at 01:32:16PM -0500, Eric Blake wrote: > We are gradually moving away from sector-based interfaces, towards > byte-based. Make the change for the last few sector-based calls > into the block layer from the parallels driver. > > Ideally, the parallels driver should switch to doing everything > byte-based, but that's a more invasive change that requires a > bit more auditing. > > Signed-off-by: Eric Blake <eblake@redhat.com> > --- > block/parallels.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
On 04/25/2018 09:32 PM, Eric Blake wrote: > We are gradually moving away from sector-based interfaces, towards > byte-based. Make the change for the last few sector-based calls > into the block layer from the parallels driver. > > Ideally, the parallels driver should switch to doing everything > byte-based, but that's a more invasive change that requires a > bit more auditing. > > Signed-off-by: Eric Blake <eblake@redhat.com> > --- > block/parallels.c | 16 ++++++++++------ > 1 file changed, 10 insertions(+), 6 deletions(-) > > diff --git a/block/parallels.c b/block/parallels.c > index 3f74fcb877a..c071c7f759f 100644 > --- a/block/parallels.c > +++ b/block/parallels.c > @@ -226,14 +226,15 @@ static int64_t allocate_clusters(BlockDriverState *bs, int64_t sector_num, > }; > qemu_iovec_init_external(&qiov, &iov, 1); > > - ret = bdrv_co_readv(bs->backing, idx * s->tracks, nb_cow_sectors, > - &qiov); > + ret = bdrv_co_preadv(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE, > + nb_cow_bytes, &qiov, 0); > if (ret < 0) { > qemu_vfree(iov.iov_base); > return ret; > } > > - ret = bdrv_co_writev(bs->file, s->data_end, nb_cow_sectors, &qiov); > + ret = bdrv_co_pwritev(bs->file, s->data_end * BDRV_SECTOR_SIZE, > + nb_cow_bytes, &qiov, 0); > qemu_vfree(iov.iov_base); > if (ret < 0) { > return ret; > @@ -339,7 +340,8 @@ static coroutine_fn int parallels_co_writev(BlockDriverState *bs, > qemu_iovec_reset(&hd_qiov); > qemu_iovec_concat(&hd_qiov, qiov, bytes_done, nbytes); > > - ret = bdrv_co_writev(bs->file, position, n, &hd_qiov); > + ret = bdrv_co_pwritev(bs->file, position * BDRV_SECTOR_SIZE, nbytes, > + &hd_qiov, 0); > if (ret < 0) { > break; > } > @@ -378,7 +380,8 @@ static coroutine_fn int parallels_co_readv(BlockDriverState *bs, > > if (position < 0) { > if (bs->backing) { > - ret = bdrv_co_readv(bs->backing, sector_num, n, &hd_qiov); > + ret = bdrv_co_preadv(bs->backing, sector_num * BDRV_SECTOR_SIZE, > + nbytes, &hd_qiov, 0); > if (ret < 0) { > break; > } > @@ -386,7 +389,8 @@ static coroutine_fn int parallels_co_readv(BlockDriverState *bs, > qemu_iovec_memset(&hd_qiov, 0, 0, nbytes); > } > } else { > - ret = bdrv_co_readv(bs->file, position, n, &hd_qiov); > + ret = bdrv_co_preadv(bs->file, position * BDRV_SECTOR_SIZE, nbytes, > + &hd_qiov, 0); > if (ret < 0) { > break; > } Reviewed-by: Denis V. Lunev <den@openvz.org>
© 2016 - 2025 Red Hat, Inc.