goto fail;
}
if (header.version != QCOW_VERSION) {
- error_setg(errp, "Unsupported qcow version %" PRIu32, header.version);
+ error_setg(errp, "qcow (v%d) does not support qcow version %" PRIu32,
+ QCOW_VERSION, header.version);
+ if (header.version == 2 || header.version == 3) {
+ error_append_hint(errp, "Try the 'qcow2' driver instead.\n");
+ }
+
ret = -ENOTSUP;
goto fail;
}
return -E2BIG;
}
ret = bdrv_truncate(bs->file, cluster_offset + s->cluster_size,
- PREALLOC_MODE_OFF, NULL);
+ false, PREALLOC_MODE_OFF, 0, NULL);
if (ret < 0) {
return ret;
}
blk_set_allow_write_beyond_eof(qcow_blk, true);
/* Create image format */
- ret = blk_truncate(qcow_blk, 0, PREALLOC_MODE_OFF, errp);
- if (ret < 0) {
- goto exit;
- }
-
memset(&header, 0, sizeof(header));
header.magic = cpu_to_be32(QCOW_MAGIC);
header.version = cpu_to_be32(QCOW_VERSION);
return ret;
}
-static int coroutine_fn qcow_co_create_opts(const char *filename,
+static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
+ const char *filename,
QemuOpts *opts, Error **errp)
{
BlockdevCreateOptions *create_options = NULL;
if (bdrv_pwrite_sync(bs->file, s->l1_table_offset, s->l1_table,
l1_length) < 0)
return -1;
- ret = bdrv_truncate(bs->file, s->l1_table_offset + l1_length,
- PREALLOC_MODE_OFF, NULL);
+ ret = bdrv_truncate(bs->file, s->l1_table_offset + l1_length, false,
+ PREALLOC_MODE_OFF, 0, NULL);
if (ret < 0)
return ret;