Block layer patches:
- file-posix: Mitigate file fragmentation with extent size hints - Tighten qemu-img rules on missing backing format - qemu-img map: Don't limit block status request size - Fix crash with virtio-scsi and iothreads -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEE3D3rFZqa+V09dFb+fwmycsiPL9YFAl8NsgMRHGt3b2xmQHJl ZGhhdC5jb20ACgkQfwmycsiPL9Z0tA//eqauxD7cTEpwrtLNrRtpiBtMG64BBpxz QfkURzB38bMVahHlwq3Gt7Zcov8V4V7vxK66h688Z/fhw3vmqIeVe8+P6+Y5s9FL jil8lewHuLTa6xELeugoV7SZXH8AAh1W2fQmiR7EPiOmpSE0wf7C5IShVlX8A04E r0n09+61qGjRIe1hNTwTtldqQEfx6UGnxQWcQb81JUPA1lZhX3cnPg/j94Bofr+m v/DbVTfsmUtTMjc0PdU7n4DKTWu8OS5B/X0unF21rTtO//cYBrhAeY3ax2jbFBWi CIZK8HLI5m9/HFyltql1LOsd+B5TtfnXMfSdvDh2jaVUlto7wTeTnWU1fv4wxUB5 hk7XgJo/y203ebFNHpTmW8tvLfGTP8uqCVfOEFxzjy+JHGrarlbWkwL2LMOFFAZ2 s2WcwlfqiYGFTG4+OFdhPf9qPWKSqMr+jTdZJTse64/c6+YXWHk+pP9lfYEUOgSi OYwdQUY9uiZ1K13q5Tif2TbFvs+c118xdTgVhAV7VtfPnWc3c647dX7iaq8Szknc IT93670Iqf/PzEj+L7XUbbLIIsAcmxD0sr7QAQEt7bfiYIDRIQLiVPyzXplETFg2 SEkvtqBovm84ct7pWQzqA6lFvr3oIFDNquR40XFGozHNnlBeNi5s7pXQnqUBLElr wDDuEi+z5QM= =DB0q -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging Block layer patches: - file-posix: Mitigate file fragmentation with extent size hints - Tighten qemu-img rules on missing backing format - qemu-img map: Don't limit block status request size - Fix crash with virtio-scsi and iothreads # gpg: Signature made Tue 14 Jul 2020 14:24:19 BST # gpg: using RSA key DC3DEB159A9AF95D3D7456FE7F09B272C88F2FD6 # gpg: issuer "kwolf@redhat.com" # gpg: Good signature from "Kevin Wolf <kwolf@redhat.com>" [full] # Primary key fingerprint: DC3D EB15 9A9A F95D 3D74 56FE 7F09 B272 C88F 2FD6 * remotes/kevin/tags/for-upstream: block: Avoid stale pointer dereference in blk_get_aio_context() qemu-img: Deprecate use of -b without -F block: Add support to warn on backing file change without format iotests: Specify explicit backing format where sensible qcow2: Deprecate use of qemu-img amend to change backing file block: Error if backing file fails during creation without -u qcow: Tolerate backing_fmt= vmdk: Add trivial backing_fmt support sheepdog: Add trivial backing_fmt support block: Finish deprecation of 'qemu-img convert -n -o' qemu-img: Flush stdout before before potential stderr messages file-posix: Mitigate file fragmentation with extent size hints iotests/059: Filter out disk size with more standard filter qemu-img map: Don't limit block status request size iotests: Simplify _filter_img_create() a bit Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
d2628b1eb7
53
block.c
53
block.c
@ -1206,7 +1206,8 @@ static int bdrv_backing_update_filename(BdrvChild *c, BlockDriverState *base,
|
||||
}
|
||||
|
||||
ret = bdrv_change_backing_file(parent, filename,
|
||||
base->drv ? base->drv->format_name : "");
|
||||
base->drv ? base->drv->format_name : "",
|
||||
false);
|
||||
if (ret < 0) {
|
||||
error_setg_errno(errp, -ret, "Could not update backing file link");
|
||||
}
|
||||
@ -4680,8 +4681,8 @@ int bdrv_check(BlockDriverState *bs,
|
||||
* image file header
|
||||
* -ENOTSUP - format driver doesn't support changing the backing file
|
||||
*/
|
||||
int bdrv_change_backing_file(BlockDriverState *bs,
|
||||
const char *backing_file, const char *backing_fmt)
|
||||
int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_file,
|
||||
const char *backing_fmt, bool warn)
|
||||
{
|
||||
BlockDriver *drv = bs->drv;
|
||||
int ret;
|
||||
@ -4695,6 +4696,12 @@ int bdrv_change_backing_file(BlockDriverState *bs,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (warn && backing_file && !backing_fmt) {
|
||||
warn_report("Deprecated use of backing file without explicit "
|
||||
"backing format, use of this image requires "
|
||||
"potentially unsafe format probing");
|
||||
}
|
||||
|
||||
if (drv->bdrv_change_backing_file != NULL) {
|
||||
ret = drv->bdrv_change_backing_file(bs, backing_file, backing_fmt);
|
||||
} else {
|
||||
@ -6128,18 +6135,30 @@ void bdrv_img_create(const char *filename, const char *fmt,
|
||||
bs = bdrv_open(full_backing, NULL, backing_options, back_flags,
|
||||
&local_err);
|
||||
g_free(full_backing);
|
||||
if (!bs && size != -1) {
|
||||
/* Couldn't open BS, but we have a size, so it's nonfatal */
|
||||
warn_reportf_err(local_err,
|
||||
"Could not verify backing image. "
|
||||
"This may become an error in future versions.\n");
|
||||
local_err = NULL;
|
||||
} else if (!bs) {
|
||||
/* Couldn't open bs, do not have size */
|
||||
error_append_hint(&local_err,
|
||||
"Could not open backing image to determine size.\n");
|
||||
if (!bs) {
|
||||
error_append_hint(&local_err, "Could not open backing image.\n");
|
||||
goto out;
|
||||
} else {
|
||||
if (!backing_fmt) {
|
||||
warn_report("Deprecated use of backing file without explicit "
|
||||
"backing format (detected format of %s)",
|
||||
bs->drv->format_name);
|
||||
if (bs->drv != &bdrv_raw) {
|
||||
/*
|
||||
* A probe of raw deserves the most attention:
|
||||
* leaving the backing format out of the image
|
||||
* will ensure bs->probed is set (ensuring we
|
||||
* don't accidentally commit into the backing
|
||||
* file), and allow more spots to warn the users
|
||||
* to fix their toolchain when opening this image
|
||||
* later. For other images, we can safely record
|
||||
* the format that we probed.
|
||||
*/
|
||||
backing_fmt = bs->drv->format_name;
|
||||
qemu_opt_set(opts, BLOCK_OPT_BACKING_FMT, backing_fmt,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
if (size == -1) {
|
||||
/* Opened BS, have no size */
|
||||
size = bdrv_getlength(bs);
|
||||
@ -6153,7 +6172,12 @@ void bdrv_img_create(const char *filename, const char *fmt,
|
||||
}
|
||||
bdrv_unref(bs);
|
||||
}
|
||||
} /* (backing_file && !(flags & BDRV_O_NO_BACKING)) */
|
||||
/* (backing_file && !(flags & BDRV_O_NO_BACKING)) */
|
||||
} else if (backing_file && !backing_fmt) {
|
||||
warn_report("Deprecated use of unopened backing file without "
|
||||
"explicit backing format, use of this image requires "
|
||||
"potentially unsafe format probing");
|
||||
}
|
||||
|
||||
if (size == -1) {
|
||||
error_setg(errp, "Image creation needs a size parameter");
|
||||
@ -6164,6 +6188,7 @@ void bdrv_img_create(const char *filename, const char *fmt,
|
||||
printf("Formatting '%s', fmt=%s ", filename, fmt);
|
||||
qemu_opts_print(opts, " ");
|
||||
puts("");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
ret = bdrv_create(drv, filename, opts, &local_err);
|
||||
|
@ -808,6 +808,7 @@ void blk_remove_bs(BlockBackend *blk)
|
||||
{
|
||||
ThrottleGroupMember *tgm = &blk->public.throttle_group_member;
|
||||
BlockDriverState *bs;
|
||||
BdrvChild *root;
|
||||
|
||||
notifier_list_notify(&blk->remove_bs_notifiers, blk);
|
||||
if (tgm->throttle_state) {
|
||||
@ -825,8 +826,9 @@ void blk_remove_bs(BlockBackend *blk)
|
||||
* to avoid that and a potential QEMU crash.
|
||||
*/
|
||||
blk_drain(blk);
|
||||
bdrv_root_unref_child(blk->root);
|
||||
root = blk->root;
|
||||
blk->root = NULL;
|
||||
bdrv_root_unref_child(root);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -30,6 +30,7 @@
|
||||
#include "block/block_int.h"
|
||||
#include "qemu/module.h"
|
||||
#include "qemu/option.h"
|
||||
#include "qemu/units.h"
|
||||
#include "trace.h"
|
||||
#include "block/thread-pool.h"
|
||||
#include "qemu/iov.h"
|
||||
@ -2318,6 +2319,14 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
|
||||
if (!file_opts->has_preallocation) {
|
||||
file_opts->preallocation = PREALLOC_MODE_OFF;
|
||||
}
|
||||
if (!file_opts->has_extent_size_hint) {
|
||||
file_opts->extent_size_hint = 1 * MiB;
|
||||
}
|
||||
if (file_opts->extent_size_hint > UINT32_MAX) {
|
||||
result = -EINVAL;
|
||||
error_setg(errp, "Extent size hint is too large");
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* Create file */
|
||||
fd = qemu_open(file_opts->filename, O_RDWR | O_CREAT | O_BINARY, 0644);
|
||||
@ -2375,6 +2384,27 @@ raw_co_create(BlockdevCreateOptions *options, Error **errp)
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#ifdef FS_IOC_FSSETXATTR
|
||||
/*
|
||||
* Try to set the extent size hint. Failure is not fatal, and a warning is
|
||||
* only printed if the option was explicitly specified.
|
||||
*/
|
||||
{
|
||||
struct fsxattr attr;
|
||||
result = ioctl(fd, FS_IOC_FSGETXATTR, &attr);
|
||||
if (result == 0) {
|
||||
attr.fsx_xflags |= FS_XFLAG_EXTSIZE;
|
||||
attr.fsx_extsize = file_opts->extent_size_hint;
|
||||
result = ioctl(fd, FS_IOC_FSSETXATTR, &attr);
|
||||
}
|
||||
if (result < 0 && file_opts->has_extent_size_hint &&
|
||||
file_opts->extent_size_hint)
|
||||
{
|
||||
warn_report("Failed to set extent size hint: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Resize and potentially preallocate the file to the desired
|
||||
* final size */
|
||||
@ -2410,6 +2440,8 @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
|
||||
{
|
||||
BlockdevCreateOptions options;
|
||||
int64_t total_size = 0;
|
||||
int64_t extent_size_hint = 0;
|
||||
bool has_extent_size_hint = false;
|
||||
bool nocow = false;
|
||||
PreallocMode prealloc;
|
||||
char *buf = NULL;
|
||||
@ -2421,6 +2453,11 @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
|
||||
/* Read out options */
|
||||
total_size = ROUND_UP(qemu_opt_get_size_del(opts, BLOCK_OPT_SIZE, 0),
|
||||
BDRV_SECTOR_SIZE);
|
||||
if (qemu_opt_get(opts, BLOCK_OPT_EXTENT_SIZE_HINT)) {
|
||||
has_extent_size_hint = true;
|
||||
extent_size_hint =
|
||||
qemu_opt_get_size_del(opts, BLOCK_OPT_EXTENT_SIZE_HINT, -1);
|
||||
}
|
||||
nocow = qemu_opt_get_bool(opts, BLOCK_OPT_NOCOW, false);
|
||||
buf = qemu_opt_get_del(opts, BLOCK_OPT_PREALLOC);
|
||||
prealloc = qapi_enum_parse(&PreallocMode_lookup, buf,
|
||||
@ -2440,6 +2477,8 @@ static int coroutine_fn raw_co_create_opts(BlockDriver *drv,
|
||||
.preallocation = prealloc,
|
||||
.has_nocow = true,
|
||||
.nocow = nocow,
|
||||
.has_extent_size_hint = has_extent_size_hint,
|
||||
.extent_size_hint = extent_size_hint,
|
||||
},
|
||||
};
|
||||
return raw_co_create(&options, errp);
|
||||
@ -2930,6 +2969,11 @@ static QemuOptsList raw_create_opts = {
|
||||
#endif
|
||||
", full)"
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_EXTENT_SIZE_HINT,
|
||||
.type = QEMU_OPT_SIZE,
|
||||
.help = "Extent size hint for the image file, 0 to disable"
|
||||
},
|
||||
{ /* end of list */ }
|
||||
}
|
||||
};
|
||||
|
20
block/qcow.c
20
block/qcow.c
@ -938,10 +938,11 @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
|
||||
{
|
||||
BlockdevCreateOptions *create_options = NULL;
|
||||
BlockDriverState *bs = NULL;
|
||||
QDict *qdict;
|
||||
QDict *qdict = NULL;
|
||||
Visitor *v;
|
||||
const char *val;
|
||||
int ret;
|
||||
char *backing_fmt;
|
||||
|
||||
static const QDictRenames opt_renames[] = {
|
||||
{ BLOCK_OPT_BACKING_FILE, "backing-file" },
|
||||
@ -949,6 +950,17 @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
|
||||
{ NULL, NULL },
|
||||
};
|
||||
|
||||
/*
|
||||
* We can't actually store a backing format, but can check that
|
||||
* the user's request made sense.
|
||||
*/
|
||||
backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
|
||||
if (backing_fmt && !bdrv_find_format(backing_fmt)) {
|
||||
error_setg(errp, "unrecognized backing format '%s'", backing_fmt);
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/* Parse options and convert legacy syntax */
|
||||
qdict = qemu_opts_to_qdict_filtered(opts, NULL, &qcow_create_opts, true);
|
||||
|
||||
@ -1012,6 +1024,7 @@ static int coroutine_fn qcow_co_create_opts(BlockDriver *drv,
|
||||
|
||||
ret = 0;
|
||||
fail:
|
||||
g_free(backing_fmt);
|
||||
qobject_unref(qdict);
|
||||
bdrv_unref(bs);
|
||||
qapi_free_BlockdevCreateOptions(create_options);
|
||||
@ -1146,6 +1159,11 @@ static QemuOptsList qcow_create_opts = {
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "File name of a base image"
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_BACKING_FMT,
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Format of the backing image",
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_ENCRYPT,
|
||||
.type = QEMU_OPT_BOOL,
|
||||
|
@ -3627,7 +3627,7 @@ qcow2_co_create(BlockdevCreateOptions *create_options, Error **errp)
|
||||
}
|
||||
|
||||
ret = bdrv_change_backing_file(blk_bs(blk), qcow2_opts->backing_file,
|
||||
backing_format);
|
||||
backing_format, false);
|
||||
if (ret < 0) {
|
||||
error_setg_errno(errp, -ret, "Could not assign backing file '%s' "
|
||||
"with format '%s'", qcow2_opts->backing_file,
|
||||
@ -5511,6 +5511,11 @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts,
|
||||
}
|
||||
|
||||
if (backing_file || backing_format) {
|
||||
if (g_strcmp0(backing_file, s->image_backing_file) ||
|
||||
g_strcmp0(backing_format, s->image_backing_format)) {
|
||||
warn_report("Deprecated use of amend to alter the backing file; "
|
||||
"use qemu-img rebase instead");
|
||||
}
|
||||
ret = qcow2_change_backing_file(bs,
|
||||
backing_file ?: s->image_backing_file,
|
||||
backing_format ?: s->image_backing_format);
|
||||
|
@ -2151,13 +2151,21 @@ static int coroutine_fn sd_co_create_opts(BlockDriver *drv,
|
||||
Error **errp)
|
||||
{
|
||||
BlockdevCreateOptions *create_options = NULL;
|
||||
QDict *qdict, *location_qdict;
|
||||
QDict *qdict = NULL, *location_qdict;
|
||||
Visitor *v;
|
||||
char *redundancy;
|
||||
char *redundancy = NULL;
|
||||
Error *local_err = NULL;
|
||||
int ret;
|
||||
char *backing_fmt = NULL;
|
||||
|
||||
redundancy = qemu_opt_get_del(opts, BLOCK_OPT_REDUNDANCY);
|
||||
backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
|
||||
|
||||
if (backing_fmt && strcmp(backing_fmt, "sheepdog") != 0) {
|
||||
error_setg(errp, "backing_file must be a sheepdog image");
|
||||
ret = -EINVAL;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
qdict = qemu_opts_to_qdict(opts, NULL);
|
||||
qdict_put_str(qdict, "driver", "sheepdog");
|
||||
@ -2220,6 +2228,7 @@ fail:
|
||||
qapi_free_BlockdevCreateOptions(create_options);
|
||||
qobject_unref(qdict);
|
||||
g_free(redundancy);
|
||||
g_free(backing_fmt);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -3177,6 +3186,11 @@ static QemuOptsList sd_create_opts = {
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "File name of a base image"
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_BACKING_FMT,
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Must be 'sheepdog' if present",
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_PREALLOC,
|
||||
.type = QEMU_OPT_STRING,
|
||||
|
@ -78,7 +78,7 @@ static int stream_prepare(Job *job)
|
||||
}
|
||||
}
|
||||
bdrv_set_backing_hd(bs, base, &local_err);
|
||||
ret = bdrv_change_backing_file(bs, base_id, base_fmt);
|
||||
ret = bdrv_change_backing_file(bs, base_id, base_fmt, false);
|
||||
if (local_err) {
|
||||
error_report_err(local_err);
|
||||
return -EPERM;
|
||||
|
14
block/vmdk.c
14
block/vmdk.c
@ -2633,6 +2633,14 @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
|
||||
bool zeroed_grain;
|
||||
bool compat6;
|
||||
VMDKCreateOptsData data;
|
||||
char *backing_fmt = NULL;
|
||||
|
||||
backing_fmt = qemu_opt_get_del(opts, BLOCK_OPT_BACKING_FMT);
|
||||
if (backing_fmt && strcmp(backing_fmt, "vmdk") != 0) {
|
||||
error_setg(errp, "backing_file must be a vmdk image");
|
||||
ret = -EINVAL;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (filename_decompose(filename, path, prefix, postfix, PATH_MAX, errp)) {
|
||||
ret = -EINVAL;
|
||||
@ -2691,6 +2699,7 @@ static int coroutine_fn vmdk_co_create_opts(BlockDriver *drv,
|
||||
vmdk_co_create_opts_cb, &data, errp);
|
||||
|
||||
exit:
|
||||
g_free(backing_fmt);
|
||||
g_free(adapter_type);
|
||||
g_free(backing_file);
|
||||
g_free(hw_version);
|
||||
@ -3026,6 +3035,11 @@ static QemuOptsList vmdk_create_opts = {
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "File name of a base image"
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_BACKING_FMT,
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "Must be 'vmdk' if present",
|
||||
},
|
||||
{
|
||||
.name = BLOCK_OPT_COMPAT6,
|
||||
.type = QEMU_OPT_BOOL,
|
||||
|
@ -3416,7 +3416,8 @@ void qmp_change_backing_file(const char *device,
|
||||
}
|
||||
|
||||
ret = bdrv_change_backing_file(image_bs, backing_file,
|
||||
image_bs->drv ? image_bs->drv->format_name : "");
|
||||
image_bs->drv ? image_bs->drv->format_name : "",
|
||||
false);
|
||||
|
||||
if (ret < 0) {
|
||||
error_setg_errno(errp, -ret, "Could not change backing file to '%s'",
|
||||
|
@ -427,13 +427,37 @@ kernel in 2018, and has also been dropped from glibc.
|
||||
Related binaries
|
||||
----------------
|
||||
|
||||
``qemu-img convert -n -o`` (since 4.2.0)
|
||||
''''''''''''''''''''''''''''''''''''''''
|
||||
qemu-img amend to adjust backing file (since 5.1)
|
||||
'''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
All options specified in ``-o`` are image creation options, so
|
||||
they have no effect when used with ``-n`` to skip image creation.
|
||||
Silently ignored options can be confusing, so this combination of
|
||||
options will be made an error in future versions.
|
||||
The use of ``qemu-img amend`` to modify the name or format of a qcow2
|
||||
backing image is deprecated; this functionality was never fully
|
||||
documented or tested, and interferes with other amend operations that
|
||||
need access to the original backing image (such as deciding whether a
|
||||
v3 zero cluster may be left unallocated when converting to a v2
|
||||
image). Rather, any changes to the backing chain should be performed
|
||||
with ``qemu-img rebase -u`` either before or after the remaining
|
||||
changes being performed by amend, as appropriate.
|
||||
|
||||
qemu-img backing file without format (since 5.1)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
The use of ``qemu-img create``, ``qemu-img rebase``, or ``qemu-img
|
||||
convert`` to create or modify an image that depends on a backing file
|
||||
now recommends that an explicit backing format be provided. This is
|
||||
for safety: if QEMU probes a different format than what you thought,
|
||||
the data presented to the guest will be corrupt; similarly, presenting
|
||||
a raw image to a guest allows a potential security exploit if a future
|
||||
probe sees a non-raw image based on guest writes.
|
||||
|
||||
To avoid the warning message, or even future refusal to create an
|
||||
unsafe image, you must pass ``-o backing_fmt=`` (or the shorthand
|
||||
``-F`` during create) to specify the intended backing format. You may
|
||||
use ``qemu-img rebase -u`` to retroactively add a backing format to an
|
||||
existing image. However, be aware that there are already potential
|
||||
security risks to blindly using ``qemu-img info`` to probe the format
|
||||
of an untrusted backing image, when deciding what format to add into
|
||||
an existing image.
|
||||
|
||||
Backwards compatibility
|
||||
-----------------------
|
||||
@ -540,8 +564,8 @@ spec you can use the ``-cpu rv64gcsu,priv_spec=v1.10.0`` command line argument.
|
||||
Related binaries
|
||||
----------------
|
||||
|
||||
``qemu-nbd --partition`` (removed in 5.0.0)
|
||||
'''''''''''''''''''''''''''''''''''''''''''
|
||||
``qemu-nbd --partition`` (removed in 5.0)
|
||||
'''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
The ``qemu-nbd --partition $digit`` code (also spelled ``-P``)
|
||||
could only handle MBR partitions, and never correctly handled logical
|
||||
@ -557,6 +581,24 @@ can be rewritten as::
|
||||
|
||||
qemu-nbd -t --image-opts driver=raw,offset=1M,size=100M,file.driver=qcow2,file.file.driver=file,file.file.filename=file.qcow2
|
||||
|
||||
``qemu-img convert -n -o`` (removed in 5.1)
|
||||
'''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
All options specified in ``-o`` are image creation options, so
|
||||
they are now rejected when used with ``-n`` to skip image creation.
|
||||
|
||||
|
||||
``qemu-img create -b bad file $size`` (removed in 5.1)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
When creating an image with a backing file that could not be opened,
|
||||
``qemu-img create`` used to issue a warning about the failure but
|
||||
proceed with the image creation if an explicit size was provided.
|
||||
However, as the ``-u`` option exists for this purpose, it is safer to
|
||||
enforce that any failure to open the backing image (including if the
|
||||
backing file is missing or an incorrect format was specified) is an
|
||||
error when ``-u`` is not used.
|
||||
|
||||
Command line options
|
||||
--------------------
|
||||
|
||||
|
@ -258,6 +258,10 @@ Command description:
|
||||
Amends the image format specific *OPTIONS* for the image file
|
||||
*FILENAME*. Not all file formats support this operation.
|
||||
|
||||
The set of options that can be amended are dependent on the image
|
||||
format, but note that amending the backing chain relationship should
|
||||
instead be performed with ``qemu-img rebase``.
|
||||
|
||||
--force allows some unsafe operations. Currently for -f luks, it allows to
|
||||
erase the last encryption key, and to overwrite an active encryption key.
|
||||
|
||||
|
@ -405,8 +405,8 @@ void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr);
|
||||
void bdrv_refresh_limits(BlockDriverState *bs, Error **errp);
|
||||
int bdrv_commit(BlockDriverState *bs);
|
||||
int bdrv_make_empty(BdrvChild *c, Error **errp);
|
||||
int bdrv_change_backing_file(BlockDriverState *bs,
|
||||
const char *backing_file, const char *backing_fmt);
|
||||
int bdrv_change_backing_file(BlockDriverState *bs, const char *backing_file,
|
||||
const char *backing_fmt, bool warn);
|
||||
void bdrv_register(BlockDriver *bdrv);
|
||||
int bdrv_drop_intermediate(BlockDriverState *top, BlockDriverState *base,
|
||||
const char *backing_file_str);
|
||||
|
@ -53,6 +53,7 @@
|
||||
#define BLOCK_OPT_ADAPTER_TYPE "adapter_type"
|
||||
#define BLOCK_OPT_REDUNDANCY "redundancy"
|
||||
#define BLOCK_OPT_NOCOW "nocow"
|
||||
#define BLOCK_OPT_EXTENT_SIZE_HINT "extent_size_hint"
|
||||
#define BLOCK_OPT_OBJECT_SIZE "object_size"
|
||||
#define BLOCK_OPT_REFCOUNT_BITS "refcount_bits"
|
||||
#define BLOCK_OPT_DATA_FILE "data_file"
|
||||
|
@ -4185,14 +4185,17 @@
|
||||
# falloc (if defined CONFIG_POSIX_FALLOCATE),
|
||||
# full (if defined CONFIG_POSIX))
|
||||
# @nocow: Turn off copy-on-write (valid only on btrfs; default: off)
|
||||
# @extent-size-hint: Extent size hint to add to the image file; 0 for not
|
||||
# adding an extent size hint (default: 1 MB, since 5.1)
|
||||
#
|
||||
# Since: 2.12
|
||||
##
|
||||
{ 'struct': 'BlockdevCreateOptionsFile',
|
||||
'data': { 'filename': 'str',
|
||||
'size': 'size',
|
||||
'*preallocation': 'PreallocMode',
|
||||
'*nocow': 'bool' } }
|
||||
'data': { 'filename': 'str',
|
||||
'size': 'size',
|
||||
'*preallocation': 'PreallocMode',
|
||||
'*nocow': 'bool',
|
||||
'*extent-size-hint': 'size'} }
|
||||
|
||||
##
|
||||
# @BlockdevCreateOptionsGluster:
|
||||
|
20
qemu-img.c
20
qemu-img.c
@ -2364,8 +2364,8 @@ static int img_convert(int argc, char **argv)
|
||||
}
|
||||
|
||||
if (skip_create && options) {
|
||||
warn_report("-o has no effect when skipping image creation");
|
||||
warn_report("This will become an error in future QEMU versions.");
|
||||
error_report("-o has no effect when skipping image creation");
|
||||
goto fail_getopt;
|
||||
}
|
||||
|
||||
if (s.has_zero_init && !skip_create) {
|
||||
@ -2517,6 +2517,13 @@ static int img_convert(int argc, char **argv)
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (out_baseimg_param) {
|
||||
if (!qemu_opt_get(opts, BLOCK_OPT_BACKING_FMT)) {
|
||||
warn_report("Deprecated use of backing file without explicit "
|
||||
"backing format");
|
||||
}
|
||||
}
|
||||
|
||||
/* Check if compression is supported */
|
||||
if (s.compressed) {
|
||||
bool encryption =
|
||||
@ -3210,12 +3217,9 @@ static int img_map(int argc, char **argv)
|
||||
curr.start = start_offset;
|
||||
while (curr.start + curr.length < length) {
|
||||
int64_t offset = curr.start + curr.length;
|
||||
int64_t n;
|
||||
int64_t n = length - offset;
|
||||
|
||||
/* Probe up to 1 GiB at a time. */
|
||||
n = MIN(1 * GiB, length - offset);
|
||||
ret = get_block_status(bs, offset, n, &next);
|
||||
|
||||
if (ret < 0) {
|
||||
error_report("Could not read file metadata: %s", strerror(-ret));
|
||||
goto out;
|
||||
@ -3800,9 +3804,9 @@ static int img_rebase(int argc, char **argv)
|
||||
* doesn't change when we switch the backing file.
|
||||
*/
|
||||
if (out_baseimg && *out_baseimg) {
|
||||
ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt);
|
||||
ret = bdrv_change_backing_file(bs, out_baseimg, out_basefmt, true);
|
||||
} else {
|
||||
ret = bdrv_change_backing_file(bs, NULL, NULL);
|
||||
ret = bdrv_change_backing_file(bs, NULL, NULL, false);
|
||||
}
|
||||
|
||||
if (ret == -ENOSPC) {
|
||||
|
@ -66,7 +66,7 @@ echo "Creating test image with backing file"
|
||||
echo
|
||||
|
||||
TEST_IMG=$TEST_IMG_SAVE
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo "Filling test image"
|
||||
echo
|
||||
|
@ -269,7 +269,7 @@ wrote 65536/65536 bytes at offset 4295032832
|
||||
No errors were found on the image.
|
||||
Creating test image with backing file
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Filling test image
|
||||
|
||||
=== IO: pattern 1
|
||||
|
@ -66,7 +66,7 @@ echo "Creating test image with backing file"
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE.orig"
|
||||
_make_test_img -b "$TEST_IMG_SAVE.base" 6G
|
||||
_make_test_img -b "$TEST_IMG_SAVE.base" -F $IMGFMT 6G
|
||||
|
||||
echo "Filling test image"
|
||||
echo
|
||||
|
@ -269,7 +269,7 @@ wrote 65536/65536 bytes at offset 4295032832
|
||||
No errors were found on the image.
|
||||
Creating test image with backing file
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Filling test image
|
||||
|
||||
=== IO: pattern 1
|
||||
|
@ -74,7 +74,7 @@ echo "Creating test image with backing file"
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE.orig"
|
||||
_make_test_img -b "$TEST_IMG_SAVE.base" 6G
|
||||
_make_test_img -b "$TEST_IMG_SAVE.base" -F $IMGFMT 6G
|
||||
|
||||
echo "Filling test image"
|
||||
echo
|
||||
@ -98,7 +98,8 @@ for backing_option in "-B " "-o backing_file="; do
|
||||
echo
|
||||
echo Testing conversion with $backing_option"$TEST_IMG.base" | _filter_testdir | _filter_imgfmt
|
||||
echo
|
||||
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT $backing_option"$TEST_IMG.base" "$TEST_IMG.orig" "$TEST_IMG"
|
||||
$QEMU_IMG convert -f $IMGFMT -O $IMGFMT $backing_option"$TEST_IMG.base" \
|
||||
-o backing_fmt=$IMGFMT "$TEST_IMG.orig" "$TEST_IMG"
|
||||
|
||||
echo "Checking if backing clusters are allocated when they shouldn't"
|
||||
echo
|
||||
|
@ -269,7 +269,7 @@ wrote 65536/65536 bytes at offset 4296015872
|
||||
No errors were found on the image.
|
||||
Creating test image with backing file
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Filling test image
|
||||
|
||||
=== IO: pattern 43
|
||||
|
@ -70,7 +70,7 @@ echo "Creating test image with backing file"
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo "Filling test image"
|
||||
echo
|
||||
@ -115,18 +115,23 @@ TEST_IMG="$TEST_IMG.base" _make_test_img 1M
|
||||
# Create an image with a null backing file to which committing will fail (with
|
||||
# ENOSPC so we can distinguish the result from some generic EIO which may be
|
||||
# generated anywhere in the block layer)
|
||||
_make_test_img -b "json:{'driver': '$IMGFMT',
|
||||
'file': {
|
||||
'driver': 'blkdebug',
|
||||
'inject-error': [{
|
||||
'event': 'write_aio',
|
||||
'errno': 28,
|
||||
'once': true
|
||||
}],
|
||||
'image': {
|
||||
'driver': 'file',
|
||||
'filename': '$TEST_IMG.base'
|
||||
}}}"
|
||||
backing="json:{'driver': '$IMGFMT',
|
||||
'file': {
|
||||
'driver': 'blkdebug',
|
||||
'inject-error': [{
|
||||
'event': 'write_aio',
|
||||
'errno': 28,
|
||||
'once': true
|
||||
}],
|
||||
'image': {
|
||||
'driver': 'file',
|
||||
'filename': '$TEST_IMG.base'
|
||||
}}}"
|
||||
|
||||
# Filter out newlines and collapse spaces
|
||||
backing=$(echo "$backing" | tr -d '\n' | tr -s ' ')
|
||||
|
||||
_make_test_img -b "$backing" -F $IMGFMT
|
||||
|
||||
# Just write anything so committing will not be a no-op
|
||||
$QEMU_IO -c 'writev 0 64k' "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -269,7 +269,7 @@ wrote 65536/65536 bytes at offset 4295032832
|
||||
No errors were found on the image.
|
||||
Creating test image with backing file
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Filling test image
|
||||
|
||||
=== IO: pattern 1
|
||||
@ -1079,18 +1079,7 @@ No errors were found on the image.
|
||||
Testing failing commit
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1048576
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=json:{'driver': 'IMGFMT',,
|
||||
'file': {
|
||||
'driver': 'blkdebug',,
|
||||
'inject-error': [{
|
||||
'event': 'write_aio',,
|
||||
'errno': 28,,
|
||||
'once': true
|
||||
}],,
|
||||
'image': {
|
||||
'driver': 'file',,
|
||||
'filename': 'TEST_DIR/t.IMGFMT.base'
|
||||
}}}
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=json:{'driver': 'IMGFMT',, 'file': { 'driver': 'blkdebug',, 'inject-error': [{ 'event': 'write_aio',, 'errno': 28,, 'once': true }],, 'image': { 'driver': 'file',, 'filename': 'TEST_DIR/t.IMGFMT.base' }}} backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: Block job failed: No space left on device
|
||||
|
@ -83,7 +83,7 @@ TEST_IMG="$TEST_IMG_SAVE"
|
||||
echo "Creating COW image"
|
||||
echo
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base_old" 1G
|
||||
_make_test_img -b "$TEST_IMG.base_old" -F $IMGFMT 1G
|
||||
io_pattern writev 0 $((4 * CLUSTER_SIZE)) 0 1 0x33
|
||||
io_pattern writev $((8 * CLUSTER_SIZE)) $((4 * CLUSTER_SIZE)) 0 1 0x33
|
||||
|
||||
@ -109,7 +109,7 @@ io_pattern readv $((15 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x00
|
||||
echo
|
||||
echo Rebase and test again
|
||||
echo
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.base_new" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.base_new" -F $IMGFMT "$TEST_IMG"
|
||||
io_pattern readv $((0 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
|
||||
io_pattern readv $((1 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
|
||||
io_pattern readv $((2 * CLUSTER_SIZE)) $CLUSTER_SIZE 0 1 0x33
|
||||
@ -159,7 +159,7 @@ OVERLAY="$TEST_DIR/$OVERLAY_WREL"
|
||||
|
||||
TEST_IMG=$BASE_OLD _make_test_img 1M
|
||||
TEST_IMG=$BASE_NEW _make_test_img 1M
|
||||
TEST_IMG=$OVERLAY _make_test_img -b "$BASE_OLD_OREL" 1M
|
||||
TEST_IMG=$OVERLAY _make_test_img -b "$BASE_OLD_OREL" -F $IMGFMT 1M
|
||||
|
||||
echo
|
||||
|
||||
@ -176,11 +176,11 @@ $QEMU_IO "$BASE_NEW" \
|
||||
echo
|
||||
|
||||
pushd "$TEST_DIR" >/dev/null
|
||||
$QEMU_IMG rebase -f "$IMGFMT" -b "$BASE_NEW_OREL" "$OVERLAY_WREL"
|
||||
$QEMU_IMG rebase -f "$IMGFMT" -b "$BASE_NEW_OREL" -F $IMGFMT "$OVERLAY_WREL"
|
||||
popd >/dev/null
|
||||
|
||||
# Verify the backing path is correct
|
||||
TEST_IMG=$OVERLAY _img_info | grep '^backing file'
|
||||
TEST_IMG=$OVERLAY _img_info | grep '^backing file:'
|
||||
|
||||
echo
|
||||
|
||||
|
@ -33,7 +33,7 @@ wrote 131072/131072 bytes at offset 786432
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Creating COW image
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base_old
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base_old backing_fmt=IMGFMT
|
||||
=== IO: pattern 0x33
|
||||
wrote 262144/262144 bytes at offset 0
|
||||
256 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
@ -146,7 +146,7 @@ read 65536/65536 bytes at offset 983040
|
||||
|
||||
Formatting 'TEST_DIR/subdir/t.IMGFMT.base_old', fmt=IMGFMT size=1048576
|
||||
Formatting 'TEST_DIR/subdir/t.IMGFMT.base_new', fmt=IMGFMT size=1048576
|
||||
Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=t.IMGFMT.base_old
|
||||
Formatting 'TEST_DIR/subdir/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=t.IMGFMT.base_old backing_fmt=IMGFMT
|
||||
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
@ -76,7 +76,7 @@ echo "Creating test image with backing file"
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
_make_test_img -b "$TEST_IMG.base" $image_size
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $image_size
|
||||
|
||||
echo "Filling test image"
|
||||
echo
|
||||
@ -101,7 +101,7 @@ io_zero readv $(( offset + 32 * 1024 )) 512 1024 32
|
||||
_check_test_img
|
||||
|
||||
# Rebase it on top of its base image
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.base" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.base" -F $IMGFMT "$TEST_IMG"
|
||||
|
||||
echo
|
||||
echo block-backup
|
||||
|
@ -70,7 +70,7 @@ wrote 512/512 bytes at offset 3221225984
|
||||
No errors were found on the image.
|
||||
Creating test image with backing file
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294968832 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294968832 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Filling test image
|
||||
|
||||
=== IO: pattern 196
|
||||
|
@ -32,8 +32,12 @@ class TestSingleDrive(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, TestSingleDrive.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', 'raw', mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % mid_img,
|
||||
'-F', iotests.imgfmt, test_img)
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 512', backing_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 524288 512', mid_img)
|
||||
self.vm = iotests.VM().add_drive("blkdebug::" + test_img,
|
||||
@ -199,7 +203,8 @@ class TestParallelOps(iotests.QMPTestCase):
|
||||
iotests.create_image(self.imgs[0], self.image_len)
|
||||
for i in range(1, self.num_imgs):
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.imgs[i-1], self.imgs[i])
|
||||
'-o', 'backing_file=%s' % self.imgs[i-1],
|
||||
'-F', 'raw' if i == 1 else iotests.imgfmt, self.imgs[i])
|
||||
|
||||
# Put data into the images we are copying data from
|
||||
odd_img_indexes = [x for x in reversed(range(self.num_imgs)) if x % 2 == 1]
|
||||
@ -544,7 +549,8 @@ class TestQuorum(iotests.QMPTestCase):
|
||||
qemu_io('-f', iotests.imgfmt,
|
||||
'-c', 'write -P 0x55 0 1024', backing_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, child_img)
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', iotests.imgfmt, child_img)
|
||||
opts.append("children.%d.file.filename=%s" % (i, child_img))
|
||||
opts.append("children.%d.node-name=node%d" % (i, i))
|
||||
|
||||
@ -585,7 +591,9 @@ class TestSmallerBackingFile(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, self.backing_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img, str(self.image_len))
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', 'raw', test_img, str(self.image_len))
|
||||
self.vm = iotests.VM().add_drive(test_img)
|
||||
self.vm.launch()
|
||||
|
||||
@ -848,7 +856,9 @@ class TestStreamStop(iotests.QMPTestCase):
|
||||
def setUp(self):
|
||||
qemu_img('create', backing_img, str(TestStreamStop.image_len))
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 32M', backing_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', 'raw', test_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 32M 32M', test_img)
|
||||
self.vm = iotests.VM().add_drive("blkdebug::" + test_img)
|
||||
self.vm.launch()
|
||||
@ -879,7 +889,9 @@ class TestSetSpeed(iotests.QMPTestCase):
|
||||
def setUp(self):
|
||||
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0x1 0 32M', backing_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', 'raw', test_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 32M 32M', test_img)
|
||||
self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
|
||||
self.vm.launch()
|
||||
|
@ -58,7 +58,7 @@ $QEMU_IO -c "write -P 0x55 0 1M" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo
|
||||
echo "== zero write with backing file =="
|
||||
|
@ -4,7 +4,7 @@ QA output created by 034
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
wrote 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== zero write with backing file ==
|
||||
wrote 196608/196608 bytes at offset 65536
|
||||
|
@ -74,7 +74,7 @@ backing_io 0 256 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo
|
||||
echo "== COW in a single cluster =="
|
||||
|
@ -514,7 +514,7 @@ wrote 512/512 bytes at offset 130048
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 512/512 bytes at offset 130560
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== COW in a single cluster ==
|
||||
wrote 2048/2048 bytes at offset 0
|
||||
|
@ -71,7 +71,7 @@ backing_io 0 256 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo
|
||||
echo "== Some concurrent requests touching the same cluster =="
|
||||
|
@ -514,7 +514,7 @@ wrote 65536/65536 bytes at offset 16646144
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 16711680
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== Some concurrent requests touching the same cluster ==
|
||||
wrote 65536/65536 bytes at offset XXX
|
||||
|
@ -133,7 +133,8 @@ echo "== Committing to a backing file with lazy_refcounts=on =="
|
||||
|
||||
TEST_IMG="$TEST_IMG".base _make_test_img -o "compat=1.1,lazy_refcounts=on" $size
|
||||
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base" $size
|
||||
_make_test_img -o "compat=1.1,lazy_refcounts=on,backing_file=$TEST_IMG.base" \
|
||||
-F $IMGFMT $size
|
||||
|
||||
$QEMU_IO -c "write 0 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG commit "$TEST_IMG"
|
||||
|
@ -66,7 +66,7 @@ No errors were found on the image.
|
||||
|
||||
== Committing to a backing file with lazy_refcounts=on ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 0
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Image committed.
|
||||
|
@ -80,8 +80,11 @@ class TestSingleDrive(ImageCommitTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, self.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % mid_img,
|
||||
'-F', iotests.imgfmt, test_img)
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0xab 0 524288', backing_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', mid_img)
|
||||
self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=mid,backing.backing.node-name=base", interface="none")
|
||||
@ -305,10 +308,16 @@ class TestRelativePaths(ImageCommitTestCase):
|
||||
if exception.errno != errno.EEXIST:
|
||||
raise
|
||||
iotests.create_image(self.backing_img_abs, TestRelativePaths.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.backing_img_abs, self.mid_img_abs)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.mid_img_abs, self.test_img)
|
||||
qemu_img('rebase', '-u', '-b', self.backing_img, self.mid_img_abs)
|
||||
qemu_img('rebase', '-u', '-b', self.mid_img, self.test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.backing_img_abs,
|
||||
'-F', 'raw', self.mid_img_abs)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.mid_img_abs,
|
||||
'-F', iotests.imgfmt, self.test_img)
|
||||
qemu_img('rebase', '-u', '-b', self.backing_img,
|
||||
'-F', 'raw', self.mid_img_abs)
|
||||
qemu_img('rebase', '-u', '-b', self.mid_img,
|
||||
'-F', iotests.imgfmt, self.test_img)
|
||||
qemu_io('-f', 'raw', '-c', 'write -P 0xab 0 524288', self.backing_img_abs)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', self.mid_img_abs)
|
||||
self.vm = iotests.VM().add_drive(self.test_img)
|
||||
@ -371,8 +380,11 @@ class TestSetSpeed(ImageCommitTestCase):
|
||||
|
||||
def setUp(self):
|
||||
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % mid_img,
|
||||
'-F', iotests.imgfmt, test_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x1 0 512', test_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xef 524288 524288', mid_img)
|
||||
self.vm = iotests.VM().add_drive('blkdebug::' + test_img)
|
||||
@ -410,9 +422,14 @@ class TestReopenOverlay(ImageCommitTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(self.img0, self.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img0, self.img1)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img1, self.img2)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % self.img2, self.img3)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.img0, '-F', 'raw', self.img1)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.img1,
|
||||
'-F', iotests.imgfmt, self.img2)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % self.img2,
|
||||
'-F', iotests.imgfmt, self.img3)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0xab 0 128K', self.img1)
|
||||
self.vm = iotests.VM().add_drive(self.img3)
|
||||
self.vm.launch()
|
||||
@ -435,8 +452,12 @@ class TestErrorHandling(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, self.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % mid_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img,
|
||||
'-F', 'raw', mid_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % mid_img,
|
||||
'-F', iotests.imgfmt, test_img)
|
||||
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x11 0 512k', mid_img)
|
||||
qemu_io('-f', iotests.imgfmt, '-c', 'write -P 0x22 0 512k', test_img)
|
||||
|
@ -44,7 +44,8 @@ class TestSingleDrive(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, self.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
|
||||
self.vm = iotests.VM().add_drive(test_img, "node-name=top,backing.node-name=base")
|
||||
if iotests.qemu_default_machine == 'pc':
|
||||
self.vm.add_drive(None, 'media=cdrom', 'ide')
|
||||
@ -157,7 +158,8 @@ class TestSingleDrive(iotests.QMPTestCase):
|
||||
self.assert_no_active_block_jobs()
|
||||
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
|
||||
% (self.image_len, backing_img), target_img)
|
||||
% (self.image_len, backing_img),
|
||||
'-F', 'raw', target_img)
|
||||
result = self.vm.qmp(self.qmp_cmd, device='drive0', sync='full',
|
||||
mode='existing', target=self.qmp_target)
|
||||
self.assert_qmp(result, 'return', {})
|
||||
@ -227,7 +229,8 @@ class TestSingleBlockdev(TestSingleDrive):
|
||||
|
||||
def setUp(self):
|
||||
TestSingleDrive.setUp(self)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
|
||||
args = {'driver': iotests.imgfmt,
|
||||
'node-name': self.qmp_target,
|
||||
'file': { 'filename': target_img, 'driver': 'file' } }
|
||||
@ -312,7 +315,8 @@ class TestMirrorNoBacking(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, TestMirrorNoBacking.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
|
||||
self.vm = iotests.VM().add_drive(test_img)
|
||||
self.vm.launch()
|
||||
|
||||
@ -329,7 +333,8 @@ class TestMirrorNoBacking(iotests.QMPTestCase):
|
||||
def test_complete(self):
|
||||
self.assert_no_active_block_jobs()
|
||||
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
|
||||
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
|
||||
mode='existing', target=target_img)
|
||||
self.assert_qmp(result, 'return', {})
|
||||
@ -344,7 +349,8 @@ class TestMirrorNoBacking(iotests.QMPTestCase):
|
||||
def test_cancel(self):
|
||||
self.assert_no_active_block_jobs()
|
||||
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, target_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', target_img)
|
||||
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
|
||||
mode='existing', target=target_img)
|
||||
self.assert_qmp(result, 'return', {})
|
||||
@ -363,7 +369,8 @@ class TestMirrorNoBacking(iotests.QMPTestCase):
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'size=%d'
|
||||
%(TestMirrorNoBacking.image_len), target_backing_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'cluster_size=%d,backing_file=%s'
|
||||
% (TestMirrorNoBacking.image_len, target_backing_img), target_img)
|
||||
% (TestMirrorNoBacking.image_len, target_backing_img),
|
||||
'-F', iotests.imgfmt, target_img)
|
||||
|
||||
result = self.vm.qmp('drive-mirror', device='drive0', sync='full',
|
||||
mode='existing', target=target_img)
|
||||
@ -382,7 +389,8 @@ class TestMirrorResized(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.create_image(backing_img, TestMirrorResized.backing_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
|
||||
qemu_img('resize', test_img, '2M')
|
||||
self.vm = iotests.VM().add_drive(test_img)
|
||||
self.vm.launch()
|
||||
@ -528,7 +536,9 @@ new_state = "1"
|
||||
# Test COW into the target image. The first half of the
|
||||
# cluster at MIRROR_GRANULARITY has to be copied from
|
||||
# backing_img, even though sync='top'.
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-ocluster_size=131072,backing_file=%s' %(backing_img), target_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-ocluster_size=131072,backing_file=%s' %(backing_img),
|
||||
'-F', 'raw', target_img)
|
||||
result = self.vm.qmp('drive-mirror', device='drive0', sync='top',
|
||||
on_source_error='ignore',
|
||||
mode='existing', target=target_img)
|
||||
@ -548,7 +558,8 @@ new_state = "1"
|
||||
self.vm.shutdown()
|
||||
|
||||
# Detach blkdebug to compare images successfully
|
||||
qemu_img('rebase', '-f', iotests.imgfmt, '-u', '-b', backing_img, test_img)
|
||||
qemu_img('rebase', '-f', iotests.imgfmt, '-u', '-b', backing_img,
|
||||
'-F', 'raw', test_img)
|
||||
self.assertTrue(iotests.compare_images(test_img, target_img),
|
||||
'target image does not match source after mirroring')
|
||||
|
||||
@ -620,7 +631,8 @@ new_state = "1"
|
||||
self.blkdebug_file = target_img + ".blkdebug"
|
||||
iotests.create_image(backing_img, TestWriteErrors.image_len)
|
||||
self.create_blkdebug_file(self.blkdebug_file, "write_aio", 5)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-obacking_file=%s' %(backing_img), test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-obacking_file=%s' %(backing_img), '-F', 'raw', test_img)
|
||||
self.vm = iotests.VM().add_drive(test_img)
|
||||
self.target_img = 'blkdebug:%s:%s' % (self.blkdebug_file, target_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-osize=%d' %(TestWriteErrors.image_len), target_img)
|
||||
@ -715,7 +727,8 @@ class TestSetSpeed(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
qemu_img('create', backing_img, str(TestSetSpeed.image_len))
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
|
||||
self.vm = iotests.VM().add_drive(test_img)
|
||||
self.vm.launch()
|
||||
|
||||
|
@ -64,8 +64,8 @@ _check_test_img
|
||||
echo
|
||||
echo "== Rebasing the image =="
|
||||
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG.orig" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.orig" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG.orig" -F $IMGFMT "$TEST_IMG"
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.orig" -F $IMGFMT "$TEST_IMG"
|
||||
_check_test_img
|
||||
|
||||
# success, all done
|
||||
|
@ -46,7 +46,7 @@ _supported_proto file
|
||||
|
||||
size=128M
|
||||
_make_test_img $size
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG"
|
||||
|
||||
echo
|
||||
echo "== backing file references self =="
|
||||
@ -54,8 +54,8 @@ _img_info --backing-chain
|
||||
|
||||
_make_test_img $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" $size
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG" "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG" -F $IMGFMT "$TEST_IMG.base"
|
||||
|
||||
echo
|
||||
echo "== parent references self =="
|
||||
@ -63,12 +63,12 @@ _img_info --backing-chain
|
||||
|
||||
_make_test_img $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.1.base"
|
||||
_make_test_img -b "$TEST_IMG.1.base" $size
|
||||
_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.2.base"
|
||||
_make_test_img -b "$TEST_IMG.2.base" $size
|
||||
_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.3.base"
|
||||
_make_test_img -b "$TEST_IMG.3.base" $size
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" "$TEST_IMG.1.base"
|
||||
_make_test_img -b "$TEST_IMG.3.base" -F $IMGFMT $size
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG.2.base" -F $IMGFMT "$TEST_IMG.1.base"
|
||||
|
||||
echo
|
||||
echo "== ancestor references another ancestor =="
|
||||
@ -76,17 +76,18 @@ _img_info --backing-chain
|
||||
|
||||
_make_test_img $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.1.base"
|
||||
_make_test_img -b "$TEST_IMG.1.base" $size
|
||||
_make_test_img -b "$TEST_IMG.1.base" -F $IMGFMT $size
|
||||
mv "$TEST_IMG" "$TEST_IMG.2.base"
|
||||
_make_test_img -b "$TEST_IMG.2.base" $size
|
||||
_make_test_img -b "$TEST_IMG.2.base" -F $IMGFMT $size
|
||||
|
||||
echo
|
||||
echo "== finite chain of length 3 (human) =="
|
||||
_img_info --backing-chain
|
||||
# Exclude backing format, since qed differs from qcow2 on what gets stored
|
||||
_img_info --backing-chain | grep -v '^backing file format:'
|
||||
|
||||
echo
|
||||
echo "== finite chain of length 3 (json) =="
|
||||
_img_info --backing-chain --output=json
|
||||
_img_info --backing-chain --output=json | grep -v 'backing-filename-format'
|
||||
|
||||
# success, all done
|
||||
echo "*** done"
|
||||
|
@ -4,20 +4,20 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
== backing file references self ==
|
||||
qemu-img: Backing file 'TEST_DIR/t.IMGFMT' creates an infinite loop.
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== parent references self ==
|
||||
qemu-img: Backing file 'TEST_DIR/t.IMGFMT' creates an infinite loop.
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.3.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.3.base backing_fmt=IMGFMT
|
||||
|
||||
== ancestor references another ancestor ==
|
||||
qemu-img: Backing file 'TEST_DIR/t.IMGFMT.2.base' creates an infinite loop.
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.1.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.2.base backing_fmt=IMGFMT
|
||||
|
||||
== finite chain of length 3 (human) ==
|
||||
image: TEST_DIR/t.IMGFMT
|
||||
|
@ -69,7 +69,7 @@ backing_io 0 32 write | $QEMU_IO "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
mv "$TEST_IMG" "$TEST_IMG.base"
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base" 6G
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 6G
|
||||
|
||||
echo
|
||||
echo "== Some concurrent requests touching the same cluster =="
|
||||
|
@ -66,7 +66,7 @@ wrote 65536/65536 bytes at offset 1966080
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 2031616
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=6442450944 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== Some concurrent requests touching the same cluster ==
|
||||
blkdebug: Suspended request 'A'
|
||||
|
@ -167,12 +167,12 @@ qemu-img create -f qcow2 -o compat=1.1 TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=1.1 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
qemu-img create -f qcow2 -o compat=0.42 TEST_DIR/t.qcow2 64M
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42'
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=0.42 lazy_refcounts=off refcount_bits=16
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42'
|
||||
|
||||
qemu-img create -f qcow2 -o compat=foobar TEST_DIR/t.qcow2 64M
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar'
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=foobar lazy_refcounts=off refcount_bits=16
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar'
|
||||
|
||||
== Check preallocation option ==
|
||||
|
||||
@ -183,8 +183,8 @@ qemu-img create -f qcow2 -o preallocation=metadata TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 preallocation=metadata compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
qemu-img create -f qcow2 -o preallocation=1234 TEST_DIR/t.qcow2 64M
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234'
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 preallocation=1234 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16
|
||||
qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234'
|
||||
|
||||
== Check encryption option ==
|
||||
|
||||
@ -206,7 +206,7 @@ qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=off TEST_DIR/t.qcow2 64M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=0.10 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=on TEST_DIR/t.qcow2 64M
|
||||
qemu-img: TEST_DIR/t.qcow2: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=0.10 lazy_refcounts=on refcount_bits=16
|
||||
qemu-img: TEST_DIR/t.qcow2: Lazy refcounts only supported with compatibility level 1.1 and above (use version=v3 or greater)
|
||||
|
||||
*** done
|
||||
|
@ -58,13 +58,13 @@ $QEMU_IO -c "write -P 0x5a 0 1048576" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
TEST_IMG="$TEST_IMG_SAVE"
|
||||
|
||||
_make_test_img -b "$TEST_IMG.old" $size
|
||||
_make_test_img -b "$TEST_IMG.old" -F $IMGFMT $size
|
||||
$QEMU_IO -c "write -z 0 1048576" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
echo
|
||||
echo "== Rebasing the image =="
|
||||
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.new" "$TEST_IMG"
|
||||
$QEMU_IMG rebase -b "$TEST_IMG.new" -F $IMGFMT "$TEST_IMG"
|
||||
$QEMU_IO -c "read -P 0x00 0 1048576" "$TEST_IMG" | _filter_qemu_io
|
||||
|
||||
# success, all done
|
||||
|
@ -7,7 +7,7 @@ wrote 1048576/1048576 bytes at offset 0
|
||||
Formatting 'TEST_DIR/t.IMGFMT.new', fmt=IMGFMT size=10485760
|
||||
wrote 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=10485760 backing_file=TEST_DIR/t.IMGFMT.old
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=10485760 backing_file=TEST_DIR/t.IMGFMT.old backing_fmt=IMGFMT
|
||||
wrote 1048576/1048576 bytes at offset 0
|
||||
1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
|
@ -70,7 +70,7 @@ device_id="drive0"
|
||||
_make_test_img $size
|
||||
cp "$TEST_IMG" "$TEST_IMG.orig"
|
||||
mv "$TEST_IMG" "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" $size
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size
|
||||
|
||||
echo
|
||||
echo === Unknown option ===
|
||||
|
@ -1,6 +1,6 @@
|
||||
QA output created by 051
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
=== Unknown option ===
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
QA output created by 051
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
=== Unknown option ===
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
QA output created by 054
|
||||
|
||||
creating too large image (1 EB)
|
||||
qemu-img: TEST_DIR/t.IMGFMT: The image size is too large for file format 'IMGFMT' (try using a larger cluster size)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1152921504606846976
|
||||
qemu-img: TEST_DIR/t.IMGFMT: The image size is too large for file format 'IMGFMT' (try using a larger cluster size)
|
||||
|
||||
creating too large image (1 EB) using qcow2.py
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296
|
||||
|
@ -54,7 +54,8 @@ class TestSyncModesNoneAndTop(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
create_image(backing_img, TestSyncModesNoneAndTop.image_len)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-o', 'backing_file=%s' % backing_img, test_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-o', 'backing_file=%s' % backing_img, '-F', 'raw', test_img)
|
||||
qemu_io('-c', 'write -P0x41 0 512', test_img)
|
||||
qemu_io('-c', 'write -P0xd5 1M 32k', test_img)
|
||||
qemu_io('-c', 'write -P0xdc 32M 124k', test_img)
|
||||
|
@ -82,7 +82,7 @@ _cleanup_test_img
|
||||
echo
|
||||
echo "=== Testing big twoGbMaxExtentFlat ==="
|
||||
_make_test_img -o "subformat=twoGbMaxExtentFlat" 1000G
|
||||
$QEMU_IMG info $TEST_IMG | _filter_testdir | sed -e 's/cid: [0-9]*/cid: XXXXXXXX/'
|
||||
_img_info --format-specific | _filter_img_info --format-specific
|
||||
_cleanup_test_img
|
||||
|
||||
echo
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -160,7 +160,7 @@ TEST_IMG=$BACKING_IMG _make_test_img 1G
|
||||
|
||||
$QEMU_IO -c 'write 0k 64k' "$BACKING_IMG" | _filter_qemu_io
|
||||
|
||||
_make_test_img -b "$BACKING_IMG" 1G
|
||||
_make_test_img -b "$BACKING_IMG" -F $IMGFMT 1G
|
||||
# Write two clusters, the second one enforces creation of an L2 table after
|
||||
# the first data cluster.
|
||||
$QEMU_IO -c 'write 0k 64k' -c 'write 512M 64k' "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -101,7 +101,7 @@ read 512/512 bytes at offset 0
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=1073741824
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1073741824 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 536870912
|
||||
|
@ -224,7 +224,7 @@ echo "=== Testing zero expansion on backed image ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
|
||||
$QEMU_IO -c "read -P 0x2a 0 128k" -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
_check_test_img
|
||||
@ -235,7 +235,7 @@ echo "=== Testing zero expansion on backed inactive clusters ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
|
||||
$QEMU_IO -c "write -z 0 64k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IO -c "write -P 0x42 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
@ -251,7 +251,7 @@ echo "=== Testing zero expansion on backed image with shared L2 table ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 64M
|
||||
$QEMU_IO -c "write -P 0x2a 0 128k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 64M
|
||||
$QEMU_IO -c "write -z 0 128k" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG snapshot -c foo "$TEST_IMG"
|
||||
$QEMU_IMG amend -o "compat=0.10" "$TEST_IMG"
|
||||
@ -274,7 +274,7 @@ echo
|
||||
echo "=== Testing progress report without snapshot ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 4G
|
||||
$QEMU_IO -c "write -z 0 64k" \
|
||||
-c "write -z 1G 64k" \
|
||||
-c "write -z 2G 64k" \
|
||||
@ -286,7 +286,7 @@ echo
|
||||
echo "=== Testing progress report with snapshot ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img -o "compat=1.1" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" 4G
|
||||
_make_test_img -o "compat=1.1" -b "$TEST_IMG.base" -F $IMGFMT 4G
|
||||
$QEMU_IO -c "write -z 0 64k" \
|
||||
-c "write -z 1G 64k" \
|
||||
-c "write -z 2G 64k" \
|
||||
|
@ -370,6 +370,7 @@ wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
|
||||
read 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
No errors were found on the image.
|
||||
@ -427,7 +428,7 @@ read 131072/131072 bytes at offset 0
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
read 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
@ -443,7 +444,7 @@ read 65536/65536 bytes at offset 65536
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
@ -462,7 +463,7 @@ read 65536/65536 bytes at offset 65536
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 131072/131072 bytes at offset 0
|
||||
128 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
No errors were found on the image.
|
||||
@ -486,7 +487,7 @@ read 67108864/67108864 bytes at offset 0
|
||||
=== Testing progress report without snapshot ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 1073741824
|
||||
@ -501,7 +502,7 @@ No errors were found on the image.
|
||||
=== Testing progress report with snapshot ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=4294967296
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 65536/65536 bytes at offset 1073741824
|
||||
|
@ -46,7 +46,7 @@ echo
|
||||
echo "=== Creating an image with a backing file and deleting that file ==="
|
||||
echo
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img $IMG_SIZE
|
||||
_make_test_img -b "$TEST_IMG.base" $IMG_SIZE
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $IMG_SIZE
|
||||
_rm_test_img "$TEST_IMG.base"
|
||||
# Just open the image and close it right again (this should print an error message)
|
||||
$QEMU_IO -c quit "$TEST_IMG" 2>&1 | _filter_testdir | _filter_imgfmt
|
||||
|
@ -3,6 +3,6 @@ QA output created by 069
|
||||
=== Creating an image with a backing file and deleting that file ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=131072
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=131072 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
qemu-io: can't open device TEST_DIR/t.IMGFMT: Could not open backing file: Could not open 'TEST_DIR/t.IMGFMT.base': No such file or directory
|
||||
*** done
|
||||
|
@ -52,7 +52,7 @@ echo "== creating backing file =="
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
$QEMU_IO -c "write -P 0xa5 0 $size" "$TEST_IMG.base" | _filter_qemu_io
|
||||
|
||||
echo
|
||||
|
@ -2,7 +2,7 @@ QA output created by 073
|
||||
|
||||
== creating backing file ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 134217728/134217728 bytes at offset 0
|
||||
128 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
|
@ -9,6 +9,6 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadat
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Cluster size must be a power of two between 512 and 2048k
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=4294967296 preallocation=metadata
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Cluster size must be a power of two between 512 and 2048k
|
||||
*** done
|
||||
|
@ -84,8 +84,10 @@ run_qemu_img create -f $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" $size
|
||||
|
||||
# Looks like a help option, but is part of the backing file name
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,help \
|
||||
-F $IMGFMT "$TEST_IMG" $size
|
||||
run_qemu_img create -f $IMGFMT -u -o backing_file="$TEST_IMG",,\? \
|
||||
-F $IMGFMT "$TEST_IMG" $size
|
||||
|
||||
# Try to trick qemu-img into creating escaped commas
|
||||
run_qemu_img create -f $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" $size
|
||||
@ -141,8 +143,8 @@ run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o help "$TEST_IMG" "$TEST_IM
|
||||
run_qemu_img convert -O $IMGFMT -o cluster_size=4k -o \? "$TEST_IMG" "$TEST_IMG".base
|
||||
|
||||
# Looks like a help option, but is part of the backing file name
|
||||
run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG",,help "$TEST_IMG" "$TEST_IMG".base
|
||||
run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG",,\? "$TEST_IMG" "$TEST_IMG".base
|
||||
run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,help "$TEST_IMG" "$TEST_IMG".base
|
||||
run_qemu_img convert -O $IMGFMT -o backing_fmt=$IMGFMT,backing_file="$TEST_IMG",,\? "$TEST_IMG" "$TEST_IMG".base
|
||||
|
||||
# Try to trick qemu-img into creating escaped commas
|
||||
run_qemu_img convert -O $IMGFMT -o backing_file="$TEST_IMG", -o help "$TEST_IMG" "$TEST_IMG".base
|
||||
|
@ -62,6 +62,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -86,6 +87,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -110,6 +112,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -134,6 +137,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -158,6 +162,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -182,6 +187,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -206,6 +212,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -230,17 +237,18 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
refcount_bits=<num> - Width of a reference count entry in bits
|
||||
size=<size> - Virtual disk size
|
||||
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2,,help lazy_refcounts=off refcount_bits=16
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help -F qcow2 TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2,,help backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2,,? lazy_refcounts=off refcount_bits=16
|
||||
Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? -F qcow2 TEST_DIR/t.qcow2 128M
|
||||
Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2,,? backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16
|
||||
|
||||
Testing: create -f qcow2 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 128M
|
||||
qemu-img: Invalid option list: backing_file=TEST_DIR/t.qcow2,
|
||||
@ -353,6 +361,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -377,6 +386,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -401,6 +411,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -425,6 +436,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -449,6 +461,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -473,6 +486,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -497,6 +511,7 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
@ -521,16 +536,17 @@ Supported options:
|
||||
encrypt.ivgen-hash-alg=<str> - Name of IV generator hash algorithm
|
||||
encrypt.key-secret=<str> - ID of secret providing qcow AES key or LUKS passphrase
|
||||
encryption=<bool (on/off)> - Encrypt the image with format 'aes'. (Deprecated in favor of encrypt.format=aes)
|
||||
extent_size_hint=<size> - Extent size hint for the image file, 0 to disable
|
||||
lazy_refcounts=<bool (on/off)> - Postpone refcount updates
|
||||
nocow=<bool (on/off)> - Turn off copy-on-write (valid only on btrfs)
|
||||
preallocation=<str> - Preallocation mode (allowed values: off, metadata, falloc, full)
|
||||
refcount_bits=<num> - Width of a reference count entry in bits
|
||||
size=<size> - Virtual disk size
|
||||
|
||||
Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
|
||||
Testing: convert -O qcow2 -o backing_fmt=qcow2,backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing file: Could not open 'TEST_DIR/t.qcow2,help': No such file or directory
|
||||
|
||||
Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
|
||||
Testing: convert -O qcow2 -o backing_fmt=qcow2,backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2.base': Could not open backing file: Could not open 'TEST_DIR/t.qcow2,?': No such file or directory
|
||||
|
||||
Testing: convert -O qcow2 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base
|
||||
@ -767,10 +783,12 @@ Amend options for 'qcow2':
|
||||
size=<size> - Virtual disk size
|
||||
|
||||
Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2
|
||||
qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
|
||||
|
||||
Testing: rebase -u -b -f qcow2 TEST_DIR/t.qcow2
|
||||
|
||||
Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2
|
||||
qemu-img: warning: Deprecated use of amend to alter the backing file; use qemu-img rebase instead
|
||||
|
||||
Testing: rebase -u -b -f qcow2 TEST_DIR/t.qcow2
|
||||
|
||||
|
@ -106,7 +106,7 @@ add_snapshot_image()
|
||||
{
|
||||
base_image="${TEST_DIR}/$((${1}-1))-${snapshot_virt0}"
|
||||
snapshot_file="${TEST_DIR}/${1}-${snapshot_virt0}"
|
||||
TEST_IMG=$snapshot_file _make_test_img -u -b "${base_image}" "$size"
|
||||
TEST_IMG=$snapshot_file _make_test_img -u -b "${base_image}" -F $IMGFMT "$size"
|
||||
do_blockdev_add "$1" "'backing': null, " "${snapshot_file}"
|
||||
}
|
||||
|
||||
@ -225,7 +225,7 @@ echo
|
||||
SNAPSHOTS=$((${SNAPSHOTS}+1))
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img "$size"
|
||||
_make_test_img -b "${TEST_IMG}.base" "$size"
|
||||
_make_test_img -b "${TEST_IMG}.base" -F $IMGFMT "$size"
|
||||
do_blockdev_add ${SNAPSHOTS} "" "${TEST_IMG}"
|
||||
blockdev_snapshot ${SNAPSHOTS} error
|
||||
|
||||
|
@ -68,12 +68,12 @@ Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compres
|
||||
|
||||
=== Create a couple of snapshots using blockdev-snapshot ===
|
||||
|
||||
Formatting 'TEST_DIR/11-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT
|
||||
Formatting 'TEST_DIR/11-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/10-snapshot-v0.IMGFMT backing_fmt=IMGFMT
|
||||
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_11', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/11-snapshot-v0.IMGFMT', 'node-name': 'file_11' } } }
|
||||
{"return": {}}
|
||||
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_11' } }
|
||||
{"return": {}}
|
||||
Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT
|
||||
Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/11-snapshot-v0.IMGFMT backing_fmt=IMGFMT
|
||||
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_12', 'backing': null, 'file': { 'driver': 'file', 'filename': 'TEST_DIR/12-snapshot-v0.IMGFMT', 'node-name': 'file_12' } } }
|
||||
{"return": {}}
|
||||
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_12' } }
|
||||
@ -101,7 +101,7 @@ Formatting 'TEST_DIR/12-snapshot-v0.IMGFMT', fmt=IMGFMT size=134217728 backing_f
|
||||
=== Invalid command - snapshot node has a backing image ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
{ 'execute': 'blockdev-add', 'arguments': { 'driver': 'IMGFMT', 'node-name': 'snap_13', 'file': { 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'node-name': 'file_13' } } }
|
||||
{"return": {}}
|
||||
{ 'execute': 'blockdev-snapshot', 'arguments': { 'node': 'virtio0', 'overlay':'snap_13' } }
|
||||
|
@ -84,7 +84,7 @@ echo
|
||||
echo "=== Testing correct handling of 'backing':null ==="
|
||||
echo
|
||||
|
||||
_make_test_img -b "$TEST_IMG.base" $IMG_SIZE
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $IMG_SIZE
|
||||
|
||||
# This should read 42
|
||||
$QEMU_IO -c 'read -P 42 0 512' "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -21,7 +21,7 @@ read 512/512 bytes at offset 0
|
||||
|
||||
=== Testing correct handling of 'backing':null ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
read 512/512 bytes at offset 0
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 512/512 bytes at offset 0
|
||||
|
@ -51,9 +51,9 @@ size_larger=100M
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img $size_smaller
|
||||
|
||||
TEST_IMG="$TEST_IMG.snp1" _make_test_img -b "$TEST_IMG.base" $size_larger
|
||||
TEST_IMG="$TEST_IMG.snp1" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT $size_larger
|
||||
|
||||
_make_test_img -b "${TEST_IMG}.snp1" $size_larger
|
||||
_make_test_img -b "${TEST_IMG}.snp1" -F $IMGFMT $size_larger
|
||||
|
||||
echo
|
||||
echo "=== Base image info before commit and resize ==="
|
||||
|
@ -1,7 +1,7 @@
|
||||
QA output created by 095
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=5242880
|
||||
Formatting 'TEST_DIR/t.IMGFMT.snp1', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.snp1
|
||||
Formatting 'TEST_DIR/t.IMGFMT.snp1', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=104857600 backing_file=TEST_DIR/t.IMGFMT.snp1 backing_fmt=IMGFMT
|
||||
|
||||
=== Base image info before commit and resize ===
|
||||
image: TEST_DIR/t.IMGFMT.base
|
||||
|
@ -67,8 +67,8 @@ echo
|
||||
|
||||
len=$((2100 * 1024 * 1024 + 512)) # larger than 2G, and not cluster aligned
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img $len
|
||||
TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" $len
|
||||
_make_test_img -b "$TEST_IMG.itmd" $len
|
||||
TEST_IMG="$TEST_IMG.itmd" _make_test_img -b "$TEST_IMG.base" -F $IMGFMT $len
|
||||
_make_test_img -b "$TEST_IMG.itmd" -F $IMGFMT $len
|
||||
|
||||
$QEMU_IO -c "write -P 1 0x7ffd0000 192k" "$TEST_IMG.base" | _filter_qemu_io
|
||||
$QEMU_IO -c "write -P 2 0x7ffe0000 128k" "$TEST_IMG.itmd" | _filter_qemu_io
|
||||
|
@ -3,8 +3,8 @@ QA output created by 097
|
||||
=== Test pass 0 ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
|
||||
wrote 196608/196608 bytes at offset 2147287040
|
||||
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 131072/131072 bytes at offset 2147352576
|
||||
@ -40,8 +40,8 @@ Offset Length File
|
||||
=== Test pass 1 ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
|
||||
wrote 196608/196608 bytes at offset 2147287040
|
||||
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 131072/131072 bytes at offset 2147352576
|
||||
@ -78,8 +78,8 @@ Offset Length File
|
||||
=== Test pass 2 ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
|
||||
wrote 196608/196608 bytes at offset 2147287040
|
||||
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 131072/131072 bytes at offset 2147352576
|
||||
@ -116,8 +116,8 @@ Offset Length File
|
||||
=== Test pass 3 ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=2202010112
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd
|
||||
Formatting 'TEST_DIR/t.IMGFMT.itmd', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=2202010112 backing_file=TEST_DIR/t.IMGFMT.itmd backing_fmt=IMGFMT
|
||||
wrote 196608/196608 bytes at offset 2147287040
|
||||
192 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 131072/131072 bytes at offset 2147352576
|
||||
|
@ -52,7 +52,7 @@ echo "=== $event ==="
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
_make_test_img -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT 64M
|
||||
|
||||
# Some data that can be leaked when emptying the top image
|
||||
$QEMU_IO -c 'write 0 64k' "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -3,7 +3,7 @@ QA output created by 098
|
||||
=== l1_update ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
|
||||
@ -12,7 +12,7 @@ No errors were found on the image.
|
||||
=== empty_image_prepare ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
|
||||
@ -25,7 +25,7 @@ No errors were found on the image.
|
||||
=== reftable_update ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
|
||||
@ -39,7 +39,7 @@ No errors were found on the image.
|
||||
=== refblock_alloc ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 65536/65536 bytes at offset 0
|
||||
64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: Failed to empty blkdebug:TEST_DIR/blkdebug.conf:TEST_DIR/t.IMGFMT: Input/output error
|
||||
|
@ -51,7 +51,10 @@ for create_mode in off falloc full; do
|
||||
echo
|
||||
echo "--- create_mode=$create_mode growth_mode=$growth_mode ---"
|
||||
|
||||
_make_test_img -o "preallocation=$create_mode" ${CREATION_SIZE}K
|
||||
# Our calculation below assumes kilobytes as unit for the actual size.
|
||||
# Disable the extent size hint because it would give us a result in
|
||||
# megabytes.
|
||||
_make_test_img -o "preallocation=$create_mode,extent_size_hint=0" ${CREATION_SIZE}K
|
||||
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" +${GROWTH_SIZE}K
|
||||
|
||||
expected_size=0
|
||||
@ -98,7 +101,7 @@ for growth_mode in falloc full; do
|
||||
# plain int. We should use the correct type for the result, and
|
||||
# this tests we do.
|
||||
|
||||
_make_test_img 2G
|
||||
_make_test_img -o "extent_size_hint=0" 2G
|
||||
$QEMU_IMG resize -f "$IMGFMT" --preallocation=$growth_mode "$TEST_IMG" +${GROWTH_SIZE}K
|
||||
|
||||
actual_size=$($QEMU_IMG info -f "$IMGFMT" "$TEST_IMG" | grep 'disk size')
|
||||
|
@ -50,7 +50,7 @@ echo '=== Reconstructable filename ==='
|
||||
echo
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
_make_test_img -b "$TEST_IMG_REL.base" 64M
|
||||
_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT 64M
|
||||
# qemu should be able to reconstruct the filename, so relative backing names
|
||||
# should work
|
||||
# (We have to filter the backing file format because vmdk always
|
||||
@ -91,7 +91,7 @@ echo '=== Backing name is always relative to the backed image ==='
|
||||
echo
|
||||
|
||||
# omit the image size; it should work anyway
|
||||
_make_test_img -b "$TEST_IMG_REL.base"
|
||||
_make_test_img -b "$TEST_IMG_REL.base" -F $IMGFMT
|
||||
|
||||
echo
|
||||
echo '=== Nodes without a common directory ==='
|
||||
|
@ -3,7 +3,7 @@ QA output created by 110
|
||||
=== Reconstructable filename ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base backing_fmt=IMGFMT
|
||||
image: TEST_DIR/t.IMGFMT
|
||||
file format: IMGFMT
|
||||
virtual size: 64 MiB (67108864 bytes)
|
||||
@ -18,7 +18,7 @@ backing file: t.IMGFMT.base (actual path: TEST_DIR/t.IMGFMT.base)
|
||||
|
||||
=== Backing name is always relative to the backed image ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
=== Nodes without a common directory ===
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
QA output created by 111
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Could not open 'TEST_DIR/t.IMGFMT.inexistent': No such file or directory
|
||||
Could not open backing image to determine size.
|
||||
Could not open backing image.
|
||||
*** done
|
||||
|
@ -2,7 +2,6 @@ QA output created by 112
|
||||
|
||||
=== refcount_bits limits ===
|
||||
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
@ -10,6 +9,7 @@ qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not e
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Refcount width must be a power of two and may not exceed 64 bits
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
refcount bits: 1
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
@ -21,10 +21,10 @@ refcount bits: 16
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
refcount bits: 16
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864
|
||||
qemu-img: TEST_DIR/t.IMGFMT: Different refcount widths than 16 bits require compatibility level 1.1 or above (use version=v3 or greater)
|
||||
|
||||
=== Snapshot limit on refcount_bits=1 ===
|
||||
|
||||
|
@ -39,12 +39,21 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
|
||||
_supported_fmt qcow2
|
||||
_supported_proto generic
|
||||
_unsupported_proto vxhs
|
||||
# At least OpenBSD doesn't seem to have truncate
|
||||
_supported_os Linux
|
||||
# qcow2.py does not work too well with external data files
|
||||
_unsupported_imgopts data_file
|
||||
|
||||
# Intentionally specify backing file without backing format; demonstrate
|
||||
# the difference in warning messages when backing file could be probed.
|
||||
# Note that only a non-raw probe result will affect the resulting image.
|
||||
truncate -s $((64 * 1024 * 1024)) "$TEST_IMG.orig"
|
||||
_make_test_img -b "$TEST_IMG.orig" 64M
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
$QEMU_IMG convert -O qcow2 -B "$TEST_IMG.orig" "$TEST_IMG.orig" "$TEST_IMG"
|
||||
_make_test_img -b "$TEST_IMG.base" 64M
|
||||
_make_test_img -u -b "$TEST_IMG.base" 64M
|
||||
|
||||
# Set an invalid backing file format
|
||||
$PYTHON qcow2.py "$TEST_IMG" add-header-ext 0xE2792ACA "foo"
|
||||
@ -55,6 +64,11 @@ _img_info
|
||||
$QEMU_IO -c "open $TEST_IMG" -c "read 0 4k" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IO -c "open -o backing.driver=$IMGFMT $TEST_IMG" -c "read 0 4k" | _filter_qemu_io
|
||||
|
||||
# Rebase the image, to show that omitting backing format triggers a warning,
|
||||
# but probing now lets us use the backing file.
|
||||
$QEMU_IMG rebase -u -b "$TEST_IMG.base" "$TEST_IMG"
|
||||
$QEMU_IO -c "open $TEST_IMG" -c "read 0 4k" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
|
||||
# success, all done
|
||||
echo '*** done'
|
||||
rm -f $seq.full
|
||||
|
@ -1,5 +1,11 @@
|
||||
QA output created by 114
|
||||
qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of raw)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.orig
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
qemu-img: warning: Deprecated use of backing file without explicit backing format
|
||||
qemu-img: warning: Deprecated use of backing file without explicit backing format (detected format of IMGFMT)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
qemu-img: warning: Deprecated use of unopened backing file without explicit backing format, use of this image requires potentially unsafe format probing
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
image: TEST_DIR/t.IMGFMT
|
||||
file format: IMGFMT
|
||||
@ -11,4 +17,7 @@ qemu-io: can't open device TEST_DIR/t.qcow2: Could not open backing file: Unknow
|
||||
no file open, try 'help open'
|
||||
read 4096/4096 bytes at offset 0
|
||||
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
qemu-img: warning: Deprecated use of backing file without explicit backing format, use of this image requires potentially unsafe format probing
|
||||
read 4096/4096 bytes at offset 0
|
||||
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
*** done
|
||||
|
@ -52,9 +52,10 @@ echo
|
||||
echo "=== Check allocation status regression with -B ==="
|
||||
echo
|
||||
|
||||
_make_test_img -b "$TEST_IMG".base
|
||||
_make_test_img -b "$TEST_IMG".base -F $IMGFMT
|
||||
$QEMU_IO -c "write -P 0x22 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base \
|
||||
-o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
|
||||
|
||||
|
||||
@ -62,18 +63,22 @@ echo
|
||||
echo "=== Check that zero clusters are kept in overlay ==="
|
||||
echo
|
||||
|
||||
_make_test_img -b "$TEST_IMG".base
|
||||
_make_test_img -b "$TEST_IMG".base -F $IMGFMT
|
||||
|
||||
$QEMU_IO -c "write -P 0 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
|
||||
$QEMU_IO -c "write -z 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base "$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IMG convert -O $IMGFMT -c -B "$TEST_IMG".base -o backing_fmt=$IMGFMT \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
$QEMU_IO -c "read -P 0 0 3M" "$TEST_IMG".orig 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
|
||||
|
||||
@ -94,11 +99,11 @@ TEST_IMG="$TEST_IMG".base _make_test_img 256M
|
||||
# We do not want such a zero write, however, because we are past the
|
||||
# end of the backing file on the target as well, so we do not need to
|
||||
# write anything there.
|
||||
_make_test_img -b "$TEST_IMG".base 768M
|
||||
_make_test_img -b "$TEST_IMG".base 768M -F $IMGFMT
|
||||
|
||||
# Use compat=0.10 as the output so there is no zero cluster support
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
-o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
|
||||
# See that nothing has been allocated past 64M
|
||||
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
|
||||
|
||||
@ -110,7 +115,7 @@ $QEMU_IO -c 'write -P 0x11 255M 1M' "$TEST_IMG".base 2>&1 | _filter_qemu_io
|
||||
$QEMU_IO -c 'write -P 0x22 600M 1M' "$TEST_IMG" 2>&1 | _filter_qemu_io
|
||||
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -o compat=0.10 \
|
||||
"$TEST_IMG" "$TEST_IMG".orig
|
||||
-o backing_fmt=$IMGFMT "$TEST_IMG" "$TEST_IMG".orig
|
||||
|
||||
$QEMU_IMG map "$TEST_IMG".orig | _filter_qemu_img_map
|
||||
$QEMU_IO -c 'read -P 0x11 255M 1M' \
|
||||
@ -199,7 +204,7 @@ $QEMU_IMG map --output=json "$TEST_IMG".orig | _filter_qemu_img_map
|
||||
TEST_IMG="$TEST_IMG".base _make_test_img 64M
|
||||
$QEMU_IO -c "write -P 0x11 0 32M" "$TEST_IMG".base 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
|
||||
_make_test_img -b "$TEST_IMG".base 64M
|
||||
_make_test_img -b "$TEST_IMG".base 64M -F $IMGFMT
|
||||
$QEMU_IO -c "write -P 0x22 0 3M" "$TEST_IMG" 2>&1 | _filter_qemu_io | _filter_testdir
|
||||
|
||||
echo
|
||||
@ -290,6 +295,13 @@ TEST_IMG="$TEST_IMG".orig _make_test_img 64M
|
||||
# backing file"
|
||||
$QEMU_IMG convert -O $IMGFMT -B "$TEST_IMG".base -n "$TEST_IMG" "$TEST_IMG".orig
|
||||
|
||||
echo
|
||||
echo '=== -n incompatible with -o ==='
|
||||
echo
|
||||
|
||||
$QEMU_IMG convert -O $IMGFMT -o preallocation=metadata -n \
|
||||
"$TEST_IMG" "$TEST_IMG".orig && echo "unexpected success"
|
||||
|
||||
# success, all done
|
||||
echo '*** done'
|
||||
rm -f $seq.full
|
||||
|
@ -5,7 +5,7 @@ wrote 67108864/67108864 bytes at offset 0
|
||||
|
||||
=== Check allocation status regression with -B ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 3145728/3145728 bytes at offset 0
|
||||
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Offset Length File
|
||||
@ -14,7 +14,7 @@ Offset Length File
|
||||
|
||||
=== Check that zero clusters are kept in overlay ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 3145728/3145728 bytes at offset 0
|
||||
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
read 3145728/3145728 bytes at offset 0
|
||||
@ -31,7 +31,7 @@ read 3145728/3145728 bytes at offset 0
|
||||
=== Converting to an overlay larger than its backing file ===
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=268435456
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=805306368 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=805306368 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
Offset Length File
|
||||
|
||||
wrote 1048576/1048576 bytes at offset 267386880
|
||||
@ -141,7 +141,7 @@ read 63963136/63963136 bytes at offset 3145728
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
wrote 33554432/33554432 bytes at offset 0
|
||||
32 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 3145728/3145728 bytes at offset 0
|
||||
3 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
|
||||
@ -233,4 +233,8 @@ Images are identical.
|
||||
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT.orig', fmt=IMGFMT size=67108864
|
||||
|
||||
=== -n incompatible with -o ===
|
||||
|
||||
qemu-img: -o has no effect when skipping image creation
|
||||
*** done
|
||||
|
@ -61,7 +61,7 @@ BASE_IMG="$TEST_DIR/image:base.$IMGFMT"
|
||||
TOP_IMG="$TEST_DIR/image:top.$IMGFMT"
|
||||
|
||||
TEST_IMG=$BASE_IMG _make_test_img 64M
|
||||
TEST_IMG=$TOP_IMG _make_test_img -b ./image:base.$IMGFMT
|
||||
TEST_IMG=$TOP_IMG _make_test_img -b ./image:base.$IMGFMT -F $IMGFMT
|
||||
|
||||
# (1) The default cluster size depends on the image format
|
||||
# (2) vmdk only supports vmdk backing files, so it always reports the
|
||||
@ -82,7 +82,7 @@ BASE_IMG="base.$IMGFMT"
|
||||
TOP_IMG="file:image:top.$IMGFMT"
|
||||
|
||||
TEST_IMG=$BASE_IMG _make_test_img 64M
|
||||
TEST_IMG=$TOP_IMG _make_test_img -b "$BASE_IMG"
|
||||
TEST_IMG=$TOP_IMG _make_test_img -b "$BASE_IMG" -F $IMGFMT
|
||||
|
||||
TEST_IMG=$TOP_IMG _img_info | grep -ve 'cluster_size' -e 'backing file format'
|
||||
|
||||
|
@ -8,14 +8,14 @@ Formatting 'file:TEST_DIR/a:b.IMGFMT', fmt=IMGFMT size=67108864
|
||||
=== Testing relative backing filename resolution ===
|
||||
|
||||
Formatting 'TEST_DIR/image:base.IMGFMT', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=./image:base.IMGFMT
|
||||
Formatting 'TEST_DIR/image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=./image:base.IMGFMT backing_fmt=IMGFMT
|
||||
image: TEST_DIR/image:top.IMGFMT
|
||||
file format: IMGFMT
|
||||
virtual size: 64 MiB (67108864 bytes)
|
||||
backing file: ./image:base.IMGFMT (actual path: TEST_DIR/./image:base.IMGFMT)
|
||||
|
||||
Formatting 'base.IMGFMT', fmt=IMGFMT size=67108864
|
||||
Formatting 'file:image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=base.IMGFMT
|
||||
Formatting 'file:image:top.IMGFMT', fmt=IMGFMT size=67108864 backing_file=base.IMGFMT backing_fmt=IMGFMT
|
||||
image: ./image:top.IMGFMT
|
||||
file format: IMGFMT
|
||||
virtual size: 64 MiB (67108864 bytes)
|
||||
|
@ -48,8 +48,8 @@ _require_devices virtio-scsi scsi-hd
|
||||
IMG_SIZE=64K
|
||||
|
||||
_make_test_img $IMG_SIZE
|
||||
TEST_IMG="$TEST_IMG.overlay0" _make_test_img -b "$TEST_IMG" $IMG_SIZE
|
||||
TEST_IMG="$TEST_IMG.overlay1" _make_test_img -b "$TEST_IMG" $IMG_SIZE
|
||||
TEST_IMG="$TEST_IMG.overlay0" _make_test_img -b "$TEST_IMG" -F $IMGFMT $IMG_SIZE
|
||||
TEST_IMG="$TEST_IMG.overlay1" _make_test_img -b "$TEST_IMG" -F $IMGFMT $IMG_SIZE
|
||||
|
||||
# So that we actually have something to mirror and the job does not return
|
||||
# immediately (which may be bad because then we cannot know whether the
|
||||
|
@ -1,7 +1,7 @@
|
||||
QA output created by 127
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=65536
|
||||
Formatting 'TEST_DIR/t.IMGFMT.overlay0', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.overlay1', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.overlay0', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.overlay1', fmt=IMGFMT size=65536 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
||||
wrote 42/42 bytes at offset 0
|
||||
42 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
{ 'execute': 'qmp_capabilities' }
|
||||
|
@ -29,7 +29,8 @@ class TestStopWithBlockJob(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
iotests.qemu_img('create', '-f', iotests.imgfmt, self.base_img, "1G")
|
||||
iotests.qemu_img('create', '-f', iotests.imgfmt, self.test_img, "-b", self.base_img)
|
||||
iotests.qemu_img('create', '-f', iotests.imgfmt, self.test_img,
|
||||
"-b", self.base_img, '-F', iotests.imgfmt)
|
||||
iotests.qemu_io('-f', iotests.imgfmt, '-c', 'write -P0x5d 1M 128M', self.test_img)
|
||||
self.vm = iotests.VM().add_drive(self.test_img)
|
||||
self.vm.launch()
|
||||
|
@ -40,7 +40,7 @@ _supported_fmt qcow2
|
||||
_supported_proto file
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img 64M
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
echo
|
||||
echo "=== Check that node-name can't be changed ==="
|
||||
|
@ -1,6 +1,6 @@
|
||||
QA output created by 133
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
=== Check that node-name can't be changed ===
|
||||
|
||||
|
@ -71,7 +71,7 @@ class TestBlockdevDel(iotests.QMPTestCase):
|
||||
def addBlockDriverStateOverlay(self, node):
|
||||
self.checkBlockDriverState(node, False)
|
||||
iotests.qemu_img('create', '-u', '-f', iotests.imgfmt,
|
||||
'-b', base_img, new_img, '1M')
|
||||
'-b', base_img, '-F', iotests.imgfmt, new_img, '1M')
|
||||
opts = {'driver': iotests.imgfmt,
|
||||
'node-name': node,
|
||||
'backing': None,
|
||||
|
@ -68,7 +68,7 @@ test_blockjob()
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
"$1" \
|
||||
"$2" \
|
||||
| _filter_img_create_in_qmp | _filter_qmp_empty_return
|
||||
| _filter_img_create | _filter_qmp_empty_return
|
||||
|
||||
# We want this to return an error because the block job is still running
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
@ -89,8 +89,8 @@ test_blockjob()
|
||||
|
||||
|
||||
TEST_IMG="$TEST_DIR/b.$IMGFMT" _make_test_img 1M
|
||||
TEST_IMG="$TEST_DIR/m.$IMGFMT" _make_test_img -b "$TEST_DIR/b.$IMGFMT" 1M
|
||||
_make_test_img -b "$TEST_DIR/m.$IMGFMT" 1M
|
||||
TEST_IMG="$TEST_DIR/m.$IMGFMT" _make_test_img -b "$TEST_DIR/b.$IMGFMT" -F $IMGFMT 1M
|
||||
_make_test_img -b "$TEST_DIR/m.$IMGFMT" 1M -F $IMGFMT
|
||||
|
||||
_launch_qemu -nodefaults
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
QA output created by 141
|
||||
Formatting 'TEST_DIR/b.IMGFMT', fmt=IMGFMT size=1048576
|
||||
Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT
|
||||
Formatting 'TEST_DIR/m.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/b.IMGFMT backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=1048576 backing_file=TEST_DIR/m.IMGFMT backing_fmt=IMGFMT
|
||||
{'execute': 'qmp_capabilities'}
|
||||
{"return": {}}
|
||||
|
||||
|
@ -67,7 +67,7 @@ size=128M
|
||||
|
||||
TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
TEST_IMG="$TEST_IMG.snap" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base" $size
|
||||
_make_test_img -b "$TEST_IMG.base" $size -F $IMGFMT
|
||||
|
||||
echo
|
||||
echo === Simple test for all cache modes ===
|
||||
|
@ -1,7 +1,7 @@
|
||||
QA output created by 142
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT.snap', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
=== Simple test for all cache modes ===
|
||||
|
||||
|
@ -94,7 +94,7 @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
|
||||
|
||||
echo
|
||||
echo "== Creating test image =="
|
||||
_make_test_img -b "${TEST_IMG}.base"
|
||||
_make_test_img -b "${TEST_IMG}.base" -F $IMGFMT
|
||||
|
||||
echo
|
||||
echo "== Launching QEMU, opts: '$opts1' =="
|
||||
@ -125,7 +125,7 @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
|
||||
_run_cmd $QEMU_IMG amend -o "size=$size" $L "${TEST_IMG}"
|
||||
_run_cmd $QEMU_IMG commit $L "${TEST_IMG}"
|
||||
_run_cmd $QEMU_IMG resize $L "${TEST_IMG}" $size
|
||||
_run_cmd $QEMU_IMG rebase $L "${TEST_IMG}" -b "${TEST_IMG}.base"
|
||||
_run_cmd $QEMU_IMG rebase $L "${TEST_IMG}" -b "${TEST_IMG}.base" -F $IMGFMT
|
||||
_run_cmd $QEMU_IMG snapshot -l $L "${TEST_IMG}"
|
||||
_run_cmd $QEMU_IMG convert $L "${TEST_IMG}" "${TEST_IMG}.convert"
|
||||
_run_cmd $QEMU_IMG dd $L if="${TEST_IMG}" of="${TEST_IMG}.convert" bs=512 count=1
|
||||
@ -135,7 +135,7 @@ for opts1 in "" "read-only=on" "read-only=on,force-share=on"; do
|
||||
# qemu-img create does not support -U
|
||||
if [ -z "$L" ]; then
|
||||
_run_cmd $QEMU_IMG create -f $IMGFMT "${TEST_IMG}" \
|
||||
-b ${TEST_IMG}.base
|
||||
-b ${TEST_IMG}.base -F $IMGFMT
|
||||
# Read the file format. It used to be the case that
|
||||
# file-posix simply truncated the file, but the qcow2
|
||||
# driver then failed to format it because it was unable
|
||||
@ -167,9 +167,9 @@ done
|
||||
|
||||
echo
|
||||
echo "== Creating ${TEST_IMG}.[abc] ==" | _filter_testdir
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.a" -b "${TEST_IMG}" | _filter_img_create
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.b" -b "${TEST_IMG}" | _filter_img_create
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.c" -b "${TEST_IMG}.b" \
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.a" -b "${TEST_IMG}" -F $IMGFMT | _filter_img_create
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.b" -b "${TEST_IMG}" -F $IMGFMT | _filter_img_create
|
||||
$QEMU_IMG create -f qcow2 "${TEST_IMG}.c" -b "${TEST_IMG}.b" -F $IMGFMT \
|
||||
| _filter_img_create
|
||||
|
||||
echo
|
||||
@ -218,7 +218,7 @@ _send_qemu_cmd $QEMU_HANDLE \
|
||||
_run_cmd $QEMU_IO "${TEST_IMG}" -c 'write 0 512'
|
||||
|
||||
echo "Creating overlay with qemu-img when the guest is running should be allowed"
|
||||
_run_cmd $QEMU_IMG create -f $IMGFMT -b "${TEST_IMG}" "${TEST_IMG}.overlay"
|
||||
_run_cmd $QEMU_IMG create -f $IMGFMT -b "${TEST_IMG}" -F $IMGFMT "${TEST_IMG}.overlay"
|
||||
|
||||
echo "== Closing an image should unlock it =="
|
||||
_send_qemu_cmd $QEMU_HANDLE \
|
||||
|
@ -6,7 +6,7 @@ QEMU_PROG: -drive if=none,file=null-co://,readonly=off,force-share=on: force-sha
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
||||
|
||||
== Creating test image ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== Launching QEMU, opts: '' ==
|
||||
|
||||
@ -68,7 +68,7 @@ _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
@ -92,10 +92,11 @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
file format: IMGFMT
|
||||
backing file format: IMGFMT
|
||||
|
||||
== Running utility commands -U ==
|
||||
|
||||
@ -130,7 +131,7 @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
||||
qemu-img: unrecognized option '-U'
|
||||
Try 'qemu-img --help' for more information
|
||||
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
@ -152,7 +153,7 @@ Round done
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
||||
|
||||
== Creating test image ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== Launching QEMU, opts: 'read-only=on' ==
|
||||
|
||||
@ -199,7 +200,7 @@ _qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
@ -215,10 +216,11 @@ _qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: TEST_DIR/t.qcow2: Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
file format: IMGFMT
|
||||
backing file format: IMGFMT
|
||||
|
||||
== Running utility commands -U ==
|
||||
|
||||
@ -253,7 +255,7 @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
||||
qemu-img: unrecognized option '-U'
|
||||
Try 'qemu-img --help' for more information
|
||||
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
qemu-img: Could not open 'TEST_DIR/t.qcow2': Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
|
||||
@ -275,7 +277,7 @@ Round done
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=33554432
|
||||
|
||||
== Creating test image ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
|
||||
== Launching QEMU, opts: 'read-only=on,force-share=on' ==
|
||||
|
||||
@ -309,7 +311,7 @@ _qemu_img_wrapper commit TEST_DIR/t.qcow2
|
||||
|
||||
_qemu_img_wrapper resize TEST_DIR/t.qcow2 32M
|
||||
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
|
||||
_qemu_img_wrapper snapshot -l TEST_DIR/t.qcow2
|
||||
|
||||
@ -321,8 +323,9 @@ _qemu_img_wrapper bench -c 1 TEST_DIR/t.qcow2
|
||||
|
||||
_qemu_img_wrapper bench -w -c 1 TEST_DIR/t.qcow2
|
||||
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper create -f qcow2 TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
file format: IMGFMT
|
||||
backing file format: IMGFMT
|
||||
|
||||
== Running utility commands -U ==
|
||||
|
||||
@ -357,7 +360,7 @@ _qemu_img_wrapper resize -U TEST_DIR/t.qcow2 32M
|
||||
qemu-img: unrecognized option '-U'
|
||||
Try 'qemu-img --help' for more information
|
||||
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base
|
||||
_qemu_img_wrapper rebase -U TEST_DIR/t.qcow2 -b TEST_DIR/t.qcow2.base -F qcow2
|
||||
|
||||
_qemu_img_wrapper snapshot -l -U TEST_DIR/t.qcow2
|
||||
|
||||
@ -398,9 +401,9 @@ Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
== Two devices with the same image (read-only=on,force-share=on - read-only=on,force-share=on) ==
|
||||
|
||||
== Creating TEST_DIR/t.qcow2.[abc] ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b
|
||||
Formatting 'TEST_DIR/t.IMGFMT.a', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.b', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT backing_fmt=IMGFMT
|
||||
Formatting 'TEST_DIR/t.IMGFMT.c', fmt=IMGFMT size=33554432 backing_file=TEST_DIR/t.IMGFMT.b backing_fmt=IMGFMT
|
||||
|
||||
== Two devices sharing the same file in backing chain ==
|
||||
|
||||
@ -430,7 +433,7 @@ qemu-io: can't open device TEST_DIR/t.qcow2: Failed to get "write" lock
|
||||
Is another process using the image [TEST_DIR/t.qcow2]?
|
||||
Creating overlay with qemu-img when the guest is running should be allowed
|
||||
|
||||
_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.overlay
|
||||
_qemu_img_wrapper create -f qcow2 -b TEST_DIR/t.qcow2 -F qcow2 TEST_DIR/t.qcow2.overlay
|
||||
== Closing an image should unlock it ==
|
||||
{ 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'drive_del d0' } }
|
||||
{"return": ""}
|
||||
|
@ -50,7 +50,7 @@ echo
|
||||
echo == backing file contains zeros ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Make sure that the whole cluster is allocated even for partial write_zeroes
|
||||
# when the backing file contains zeros
|
||||
@ -74,7 +74,7 @@ echo
|
||||
echo == backing file contains non-zero data before write_zeroes ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Single cluster; non-zero data at the cluster start
|
||||
# ... | XX -- 00 -- | ...
|
||||
@ -97,7 +97,7 @@ echo
|
||||
echo == backing file contains non-zero data after write_zeroes ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Single cluster; non-zero data directly after request
|
||||
# ... | -- 00 XX -- | ...
|
||||
@ -120,7 +120,7 @@ echo
|
||||
echo == write_zeroes covers non-zero data ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# non-zero data at front of request
|
||||
# Backing file: -- XX -- --
|
||||
@ -160,7 +160,7 @@ echo
|
||||
echo == spanning two clusters, non-zero before request ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Two clusters; non-zero data before request:
|
||||
# 1. At cluster start: 32k: XX -- -- 00 | 00 -- -- --
|
||||
@ -190,7 +190,7 @@ echo
|
||||
echo == spanning two clusters, non-zero after request ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Two clusters; non-zero data after request:
|
||||
# 1. Directly after request: 32k: -- -- -- 00 | 00 XX -- --
|
||||
@ -220,7 +220,7 @@ echo
|
||||
echo == spanning two clusters, partially overwriting backing file ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Backing file: -- -- XX XX | XX XX -- --
|
||||
# Active layer: -- -- XX 00 | 00 XX -- --
|
||||
@ -239,7 +239,7 @@ echo
|
||||
echo == spanning multiple clusters, non-zero in first cluster ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Backing file: 64k: XX XX -- -- | -- -- -- -- | -- -- -- --
|
||||
# Active layer: 64k: XX XX 00 00 | 00 00 00 00 | 00 -- -- --
|
||||
@ -255,7 +255,7 @@ echo
|
||||
echo == spanning multiple clusters, non-zero in intermediate cluster ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Backing file: 64k: -- -- -- -- | -- XX XX -- | -- -- -- --
|
||||
# Active layer: 64k: -- -- 00 00 | 00 00 00 00 | 00 -- -- --
|
||||
@ -270,7 +270,7 @@ echo
|
||||
echo == spanning multiple clusters, non-zero in final cluster ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Backing file: 64k: -- -- -- -- | -- -- -- -- | -- -- XX XX
|
||||
# Active layer: 64k: -- -- 00 00 | 00 00 00 00 | 00 -- XX XX
|
||||
@ -286,7 +286,7 @@ echo
|
||||
echo == spanning multiple clusters, partially overwriting backing file ==
|
||||
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $size
|
||||
_make_test_img -b "$TEST_IMG.base"
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT
|
||||
|
||||
# Backing file: 64k: -- XX XX XX | XX XX XX XX | XX XX XX --
|
||||
# Active layer: 64k: -- XX 00 00 | 00 00 00 00 | 00 XX XX --
|
||||
@ -338,7 +338,7 @@ CLUSTER_SIZE=2048 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
|
||||
# Write at the front: sector-wise, the request is:
|
||||
# backing: 128m... | -- --
|
||||
# active: 128m... | 00 -- -- --
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $size 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -346,7 +346,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write at the back: sector-wise, the request is:
|
||||
# backing: 128m... | -- --
|
||||
# active: 128m... | -- -- -- 00
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $((size + 1536)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -354,7 +354,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write at middle: sector-wise, the request is:
|
||||
# backing: 128m... | -- --
|
||||
# active: 128m... | -- 00 00 --
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $((size + 512)) 1024" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -362,7 +362,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write entire cluster: sector-wise, the request is:
|
||||
# backing: 128m... | -- --
|
||||
# active: 128m... | 00 00 00 00
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -373,7 +373,7 @@ $QEMU_IO -c "write -z $size 512" "$TEST_IMG.base" | _filter_qemu_io
|
||||
# Write at the front: sector-wise, the request is:
|
||||
# backing: 128m... | 00 00
|
||||
# active: 128m... | 00 -- -- --
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $size 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -381,7 +381,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write at the back: sector-wise, the request is:
|
||||
# backing: 128m... | 00 00
|
||||
# active: 128m... | -- -- -- 00
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $((size + 1536)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -389,7 +389,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write at middle: sector-wise, the request is:
|
||||
# backing: 128m... | 00 00
|
||||
# active: 128m... | -- 00 00 --
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $((size + 512)) 1024" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -397,7 +397,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Write entire cluster: sector-wise, the request is:
|
||||
# backing: 128m... | 00 00
|
||||
# active: 128m... | 00 00 00 00
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -z $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "alloc $size 2048" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
@ -427,7 +427,7 @@ echo == unaligned image tail cluster, allocation required ==
|
||||
# Backing file: 128m... | XX --
|
||||
# Active layer: 128m... | -- -- 00 --
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -P 1 $((size)) 512" "$TEST_IMG.base" | _filter_qemu_io
|
||||
$QEMU_IO -c "write -z $((size + 1024)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -P 1 $((size)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
@ -438,7 +438,7 @@ $QEMU_IMG map --output=json "$TEST_IMG" | _filter_qemu_img_map
|
||||
# Backing file: 128m: ... | -- XX
|
||||
# Active layer: 128m: ... | 00 -- -- 00
|
||||
CLUSTER_SIZE=512 TEST_IMG="$TEST_IMG.base" _make_test_img $((size + 1024))
|
||||
_make_test_img -b "$TEST_IMG.base" $((size + 2048))
|
||||
_make_test_img -b "$TEST_IMG.base" -F $IMGFMT $((size + 2048))
|
||||
$QEMU_IO -c "write -P 1 $((size + 512)) 512" "$TEST_IMG.base" | _filter_qemu_io
|
||||
$QEMU_IO -c "write -z $((size)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
$QEMU_IO -c "read -P 0 $((size)) 512" "$TEST_IMG" | _filter_qemu_io
|
||||
|
@ -2,7 +2,7 @@ QA output created by 154
|
||||
|
||||
== backing file contains zeros ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 0
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 2048/2048 bytes at offset 10240
|
||||
@ -22,7 +22,7 @@ wrote 2048/2048 bytes at offset 27648
|
||||
|
||||
== backing file contains non-zero data before write_zeroes ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 32768
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 1024/1024 bytes at offset 34816
|
||||
@ -49,7 +49,7 @@ read 2048/2048 bytes at offset 67584
|
||||
|
||||
== backing file contains non-zero data after write_zeroes ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 34816
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 1024/1024 bytes at offset 33792
|
||||
@ -76,7 +76,7 @@ read 3072/3072 bytes at offset 40960
|
||||
|
||||
== write_zeroes covers non-zero data ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 5120
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 2048/2048 bytes at offset 5120
|
||||
@ -113,7 +113,7 @@ read 4096/4096 bytes at offset 28672
|
||||
|
||||
== spanning two clusters, non-zero before request ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 32768
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 2048/2048 bytes at offset 35840
|
||||
@ -155,7 +155,7 @@ read 5120/5120 bytes at offset 68608
|
||||
|
||||
== spanning two clusters, non-zero after request ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 37888
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 2048/2048 bytes at offset 35840
|
||||
@ -197,7 +197,7 @@ read 1024/1024 bytes at offset 72704
|
||||
|
||||
== spanning two clusters, partially overwriting backing file ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 4096/4096 bytes at offset 2048
|
||||
4 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 2048/2048 bytes at offset 3072
|
||||
@ -217,7 +217,7 @@ read 2048/2048 bytes at offset 6144
|
||||
|
||||
== spanning multiple clusters, non-zero in first cluster ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 65536
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 7168/7168 bytes at offset 67584
|
||||
@ -233,7 +233,7 @@ read 10240/10240 bytes at offset 67584
|
||||
|
||||
== spanning multiple clusters, non-zero in intermediate cluster ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 70656
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 7168/7168 bytes at offset 67584
|
||||
@ -246,7 +246,7 @@ read 12288/12288 bytes at offset 65536
|
||||
|
||||
== spanning multiple clusters, non-zero in final cluster ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 75776
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 7168/7168 bytes at offset 67584
|
||||
@ -262,7 +262,7 @@ read 2048/2048 bytes at offset 75776
|
||||
|
||||
== spanning multiple clusters, partially overwriting backing file ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134217728
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134217728 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 10240/10240 bytes at offset 66560
|
||||
10 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 7168/7168 bytes at offset 67584
|
||||
@ -305,25 +305,25 @@ wrote 2048/2048 bytes at offset 134217728
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134219776, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134217728
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134219264
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 134218240
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 134217728
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
@ -331,25 +331,25 @@ wrote 2048/2048 bytes at offset 134217728
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
wrote 512/512 bytes at offset 134217728
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134217728
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134219264
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 1024/1024 bytes at offset 134218240
|
||||
1 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": true, "data": false}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 2048/2048 bytes at offset 134217728
|
||||
2 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
2048/2048 bytes allocated at offset 128 MiB
|
||||
@ -377,7 +377,7 @@ read 1024/1024 bytes at offset 134217728
|
||||
|
||||
== unaligned image tail cluster, allocation required ==
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134217728
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 512/512 bytes at offset 134218752
|
||||
@ -389,7 +389,7 @@ read 1536/1536 bytes at offset 134218240
|
||||
[{ "start": 0, "length": 134217728, "depth": 1, "zero": true, "data": false},
|
||||
{ "start": 134217728, "length": 2048, "depth": 0, "zero": false, "data": true, "offset": OFFSET}]
|
||||
Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=134218752
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base
|
||||
Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=134219776 backing_file=TEST_DIR/t.IMGFMT.base backing_fmt=IMGFMT
|
||||
wrote 512/512 bytes at offset 134218240
|
||||
512 bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec)
|
||||
wrote 512/512 bytes at offset 134217728
|
||||
|
@ -60,9 +60,12 @@ class BaseClass(iotests.QMPTestCase):
|
||||
|
||||
def setUp(self):
|
||||
qemu_img('create', '-f', iotests.imgfmt, back0_img, '1440K')
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img, back1_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img, back2_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back2_img, source_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back0_img,
|
||||
'-F', iotests.imgfmt, back1_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back1_img,
|
||||
'-F', iotests.imgfmt, back2_img)
|
||||
qemu_img('create', '-f', iotests.imgfmt, '-b', back2_img,
|
||||
'-F', iotests.imgfmt, source_img)
|
||||
|
||||
self.vm = iotests.VM()
|
||||
# Add the BDS via blockdev-add so it stays around after the mirror block
|
||||
@ -89,7 +92,8 @@ class BaseClass(iotests.QMPTestCase):
|
||||
if self.existing:
|
||||
if self.target_backing:
|
||||
qemu_img('create', '-f', iotests.imgfmt,
|
||||
'-b', self.target_backing, target_img, '1440K')
|
||||
'-b', self.target_backing, '-F', 'raw',
|
||||
target_img, '1440K')
|
||||
else:
|
||||
qemu_img('create', '-f', iotests.imgfmt, target_img, '1440K')
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user