Loading block/parallels.c +6 −8 Original line number Diff line number Diff line Loading @@ -220,20 +220,18 @@ static int64_t allocate_clusters(BlockDriverState *bs, int64_t sector_num, if (bs->backing) { int64_t nb_cow_sectors = to_allocate * s->tracks; int64_t nb_cow_bytes = nb_cow_sectors << BDRV_SECTOR_BITS; QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, qemu_blockalign(bs, nb_cow_bytes), nb_cow_bytes); void *buf = qemu_blockalign(bs, nb_cow_bytes); ret = bdrv_co_preadv(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE, nb_cow_bytes, &qiov, 0); ret = bdrv_co_pread(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE, nb_cow_bytes, buf, 0); if (ret < 0) { qemu_vfree(qemu_iovec_buf(&qiov)); qemu_vfree(buf); return ret; } ret = bdrv_co_pwritev(bs->file, s->data_end * BDRV_SECTOR_SIZE, nb_cow_bytes, &qiov, 0); qemu_vfree(qemu_iovec_buf(&qiov)); nb_cow_bytes, buf, 0); qemu_vfree(buf); if (ret < 0) { return ret; } Loading Loading
block/parallels.c +6 −8 Original line number Diff line number Diff line Loading @@ -220,20 +220,18 @@ static int64_t allocate_clusters(BlockDriverState *bs, int64_t sector_num, if (bs->backing) { int64_t nb_cow_sectors = to_allocate * s->tracks; int64_t nb_cow_bytes = nb_cow_sectors << BDRV_SECTOR_BITS; QEMUIOVector qiov = QEMU_IOVEC_INIT_BUF(qiov, qemu_blockalign(bs, nb_cow_bytes), nb_cow_bytes); void *buf = qemu_blockalign(bs, nb_cow_bytes); ret = bdrv_co_preadv(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE, nb_cow_bytes, &qiov, 0); ret = bdrv_co_pread(bs->backing, idx * s->tracks * BDRV_SECTOR_SIZE, nb_cow_bytes, buf, 0); if (ret < 0) { qemu_vfree(qemu_iovec_buf(&qiov)); qemu_vfree(buf); return ret; } ret = bdrv_co_pwritev(bs->file, s->data_end * BDRV_SECTOR_SIZE, nb_cow_bytes, &qiov, 0); qemu_vfree(qemu_iovec_buf(&qiov)); nb_cow_bytes, buf, 0); qemu_vfree(buf); if (ret < 0) { return ret; } Loading