mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 03:29:43 +00:00
qcow2: switch to *_co_* functions
Signed-off-by: Alberto Faria <afaria@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-Id: <20221013123711.620631-20-pbonzini@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
58684155e4
commit
38505e2a14
@ -48,14 +48,14 @@ int coroutine_fn qcow2_shrink_l1_table(BlockDriverState *bs,
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
BLKDBG_EVENT(bs->file, BLKDBG_L1_SHRINK_WRITE_TABLE);
|
BLKDBG_EVENT(bs->file, BLKDBG_L1_SHRINK_WRITE_TABLE);
|
||||||
ret = bdrv_pwrite_zeroes(bs->file, s->l1_table_offset +
|
ret = bdrv_co_pwrite_zeroes(bs->file,
|
||||||
new_l1_size * L1E_SIZE,
|
s->l1_table_offset + new_l1_size * L1E_SIZE,
|
||||||
(s->l1_size - new_l1_size) * L1E_SIZE, 0);
|
(s->l1_size - new_l1_size) * L1E_SIZE, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = bdrv_flush(bs->file->bs);
|
ret = bdrv_co_flush(bs->file->bs);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
@ -118,8 +118,8 @@ int coroutine_fn qcow2_refcount_init(BlockDriverState *bs)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
BLKDBG_EVENT(bs->file, BLKDBG_REFTABLE_LOAD);
|
BLKDBG_EVENT(bs->file, BLKDBG_REFTABLE_LOAD);
|
||||||
ret = bdrv_pread(bs->file, s->refcount_table_offset,
|
ret = bdrv_co_pread(bs->file, s->refcount_table_offset,
|
||||||
refcount_table_size2, s->refcount_table, 0);
|
refcount_table_size2, s->refcount_table, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
@ -3657,9 +3657,9 @@ int coroutine_fn qcow2_shrink_reftable(BlockDriverState *bs)
|
|||||||
reftable_tmp[i] = unused_block ? 0 : cpu_to_be64(s->refcount_table[i]);
|
reftable_tmp[i] = unused_block ? 0 : cpu_to_be64(s->refcount_table[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = bdrv_pwrite_sync(bs->file, s->refcount_table_offset,
|
ret = bdrv_co_pwrite_sync(bs->file, s->refcount_table_offset,
|
||||||
s->refcount_table_size * REFTABLE_ENTRY_SIZE,
|
s->refcount_table_size * REFTABLE_ENTRY_SIZE,
|
||||||
reftable_tmp, 0);
|
reftable_tmp, 0);
|
||||||
/*
|
/*
|
||||||
* If the write in the reftable failed the image may contain a partially
|
* If the write in the reftable failed the image may contain a partially
|
||||||
* overwritten reftable. In this case it would be better to clear the
|
* overwritten reftable. In this case it would be better to clear the
|
||||||
|
@ -441,9 +441,9 @@ int coroutine_fn qcow2_check_read_snapshot_table(BlockDriverState *bs,
|
|||||||
} QEMU_PACKED snapshot_table_pointer;
|
} QEMU_PACKED snapshot_table_pointer;
|
||||||
|
|
||||||
/* qcow2_do_open() discards this information in check mode */
|
/* qcow2_do_open() discards this information in check mode */
|
||||||
ret = bdrv_pread(bs->file, offsetof(QCowHeader, nb_snapshots),
|
ret = bdrv_co_pread(bs->file, offsetof(QCowHeader, nb_snapshots),
|
||||||
sizeof(snapshot_table_pointer), &snapshot_table_pointer,
|
sizeof(snapshot_table_pointer), &snapshot_table_pointer,
|
||||||
0);
|
0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
result->check_errors++;
|
result->check_errors++;
|
||||||
fprintf(stderr, "ERROR failed to read the snapshot table pointer from "
|
fprintf(stderr, "ERROR failed to read the snapshot table pointer from "
|
||||||
|
@ -1306,7 +1306,7 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
uint64_t l1_vm_state_index;
|
uint64_t l1_vm_state_index;
|
||||||
bool update_header = false;
|
bool update_header = false;
|
||||||
|
|
||||||
ret = bdrv_pread(bs->file, 0, sizeof(header), &header, 0);
|
ret = bdrv_co_pread(bs->file, 0, sizeof(header), &header, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not read qcow2 header");
|
error_setg_errno(errp, -ret, "Could not read qcow2 header");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -1382,9 +1382,9 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
if (header.header_length > sizeof(header)) {
|
if (header.header_length > sizeof(header)) {
|
||||||
s->unknown_header_fields_size = header.header_length - sizeof(header);
|
s->unknown_header_fields_size = header.header_length - sizeof(header);
|
||||||
s->unknown_header_fields = g_malloc(s->unknown_header_fields_size);
|
s->unknown_header_fields = g_malloc(s->unknown_header_fields_size);
|
||||||
ret = bdrv_pread(bs->file, sizeof(header),
|
ret = bdrv_co_pread(bs->file, sizeof(header),
|
||||||
s->unknown_header_fields_size,
|
s->unknown_header_fields_size,
|
||||||
s->unknown_header_fields, 0);
|
s->unknown_header_fields, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not read unknown qcow2 header "
|
error_setg_errno(errp, -ret, "Could not read unknown qcow2 header "
|
||||||
"fields");
|
"fields");
|
||||||
@ -1579,8 +1579,8 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
ret = bdrv_pread(bs->file, s->l1_table_offset, s->l1_size * L1E_SIZE,
|
ret = bdrv_co_pread(bs->file, s->l1_table_offset, s->l1_size * L1E_SIZE,
|
||||||
s->l1_table, 0);
|
s->l1_table, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not read L1 table");
|
error_setg_errno(errp, -ret, "Could not read L1 table");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -1699,8 +1699,8 @@ static int coroutine_fn qcow2_do_open(BlockDriverState *bs, QDict *options,
|
|||||||
}
|
}
|
||||||
|
|
||||||
s->image_backing_file = g_malloc(len + 1);
|
s->image_backing_file = g_malloc(len + 1);
|
||||||
ret = bdrv_pread(bs->file, header.backing_file_offset, len,
|
ret = bdrv_co_pread(bs->file, header.backing_file_offset, len,
|
||||||
s->image_backing_file, 0);
|
s->image_backing_file, 0);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not read backing file name");
|
error_setg_errno(errp, -ret, "Could not read backing file name");
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -3679,7 +3679,7 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
|
|||||||
cpu_to_be64(QCOW2_INCOMPAT_EXTL2);
|
cpu_to_be64(QCOW2_INCOMPAT_EXTL2);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = blk_pwrite(blk, 0, cluster_size, header, 0);
|
ret = blk_co_pwrite(blk, 0, cluster_size, header, 0);
|
||||||
g_free(header);
|
g_free(header);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, -ret, "Could not write qcow2 header");
|
error_setg_errno(errp, -ret, "Could not write qcow2 header");
|
||||||
@ -3689,7 +3689,7 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
|
|||||||
/* Write a refcount table with one refcount block */
|
/* Write a refcount table with one refcount block */
|
||||||
refcount_table = g_malloc0(2 * cluster_size);
|
refcount_table = g_malloc0(2 * cluster_size);
|
||||||
refcount_table[0] = cpu_to_be64(2 * cluster_size);
|
refcount_table[0] = cpu_to_be64(2 * cluster_size);
|
||||||
ret = blk_pwrite(blk, cluster_size, 2 * cluster_size, refcount_table, 0);
|
ret = blk_co_pwrite(blk, cluster_size, 2 * cluster_size, refcount_table, 0);
|
||||||
g_free(refcount_table);
|
g_free(refcount_table);
|
||||||
|
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
@ -3744,8 +3744,8 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Okay, now that we have a valid image, let's give it the right size */
|
/* Okay, now that we have a valid image, let's give it the right size */
|
||||||
ret = blk_truncate(blk, qcow2_opts->size, false, qcow2_opts->preallocation,
|
ret = blk_co_truncate(blk, qcow2_opts->size, false,
|
||||||
0, errp);
|
qcow2_opts->preallocation, 0, errp);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_prepend(errp, "Could not resize image: ");
|
error_prepend(errp, "Could not resize image: ");
|
||||||
goto out;
|
goto out;
|
||||||
|
Loading…
Reference in New Issue
Block a user