block/amend: refactor qcow2 amend options
Some qcow2 create options can't be used for amend. Remove them from the qcow2 create options and add generic logic to detect such options in qemu-img Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> [mreitz: Dropped some iotests reference output hunks that became unnecessary thanks to "iotests: Make _filter_img_create more active"] Signed-off-by: Max Reitz <mreitz@redhat.com> Message-Id: <20200625125548.870061-12-mreitz@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Max Reitz
						Max Reitz
					
				
			
			
				
	
			
			
			
						parent
						
							df373fb0a3
						
					
				
				
					commit
					0b6786a9c1
				
			
							
								
								
									
										138
									
								
								block/qcow2.c
									
									
									
									
									
								
							
							
						
						
									
										138
									
								
								block/qcow2.c
									
									
									
									
									
								
							| @@ -3042,17 +3042,6 @@ static int qcow2_change_backing_file(BlockDriverState *bs, | |||||||
|     return qcow2_update_header(bs); |     return qcow2_update_header(bs); | ||||||
| } | } | ||||||
|  |  | ||||||
| static int qcow2_crypt_method_from_format(const char *encryptfmt) |  | ||||||
| { |  | ||||||
|     if (g_str_equal(encryptfmt, "luks")) { |  | ||||||
|         return QCOW_CRYPT_LUKS; |  | ||||||
|     } else if (g_str_equal(encryptfmt, "aes")) { |  | ||||||
|         return QCOW_CRYPT_AES; |  | ||||||
|     } else { |  | ||||||
|         return -EINVAL; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static int qcow2_set_up_encryption(BlockDriverState *bs, | static int qcow2_set_up_encryption(BlockDriverState *bs, | ||||||
|                                    QCryptoBlockCreateOptions *cryptoopts, |                                    QCryptoBlockCreateOptions *cryptoopts, | ||||||
|                                    Error **errp) |                                    Error **errp) | ||||||
| @@ -5361,9 +5350,6 @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts, | |||||||
|     bool lazy_refcounts = s->use_lazy_refcounts; |     bool lazy_refcounts = s->use_lazy_refcounts; | ||||||
|     bool data_file_raw = data_file_is_raw(bs); |     bool data_file_raw = data_file_is_raw(bs); | ||||||
|     const char *compat = NULL; |     const char *compat = NULL; | ||||||
|     uint64_t cluster_size = s->cluster_size; |  | ||||||
|     bool encrypt; |  | ||||||
|     int encformat; |  | ||||||
|     int refcount_bits = s->refcount_bits; |     int refcount_bits = s->refcount_bits; | ||||||
|     int ret; |     int ret; | ||||||
|     QemuOptDesc *desc = opts->list->desc; |     QemuOptDesc *desc = opts->list->desc; | ||||||
| @@ -5388,44 +5374,12 @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts, | |||||||
|                 error_setg(errp, "Unknown compatibility level %s", compat); |                 error_setg(errp, "Unknown compatibility level %s", compat); | ||||||
|                 return -EINVAL; |                 return -EINVAL; | ||||||
|             } |             } | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_PREALLOC)) { |  | ||||||
|             error_setg(errp, "Cannot change preallocation mode"); |  | ||||||
|             return -ENOTSUP; |  | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_SIZE)) { |         } else if (!strcmp(desc->name, BLOCK_OPT_SIZE)) { | ||||||
|             new_size = qemu_opt_get_size(opts, BLOCK_OPT_SIZE, 0); |             new_size = qemu_opt_get_size(opts, BLOCK_OPT_SIZE, 0); | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_BACKING_FILE)) { |         } else if (!strcmp(desc->name, BLOCK_OPT_BACKING_FILE)) { | ||||||
|             backing_file = qemu_opt_get(opts, BLOCK_OPT_BACKING_FILE); |             backing_file = qemu_opt_get(opts, BLOCK_OPT_BACKING_FILE); | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_BACKING_FMT)) { |         } else if (!strcmp(desc->name, BLOCK_OPT_BACKING_FMT)) { | ||||||
|             backing_format = qemu_opt_get(opts, BLOCK_OPT_BACKING_FMT); |             backing_format = qemu_opt_get(opts, BLOCK_OPT_BACKING_FMT); | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_ENCRYPT)) { |  | ||||||
|             encrypt = qemu_opt_get_bool(opts, BLOCK_OPT_ENCRYPT, |  | ||||||
|                                         !!s->crypto); |  | ||||||
|  |  | ||||||
|             if (encrypt != !!s->crypto) { |  | ||||||
|                 error_setg(errp, |  | ||||||
|                            "Changing the encryption flag is not supported"); |  | ||||||
|                 return -ENOTSUP; |  | ||||||
|             } |  | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_ENCRYPT_FORMAT)) { |  | ||||||
|             encformat = qcow2_crypt_method_from_format( |  | ||||||
|                 qemu_opt_get(opts, BLOCK_OPT_ENCRYPT_FORMAT)); |  | ||||||
|  |  | ||||||
|             if (encformat != s->crypt_method_header) { |  | ||||||
|                 error_setg(errp, |  | ||||||
|                            "Changing the encryption format is not supported"); |  | ||||||
|                 return -ENOTSUP; |  | ||||||
|             } |  | ||||||
|         } else if (g_str_has_prefix(desc->name, "encrypt.")) { |  | ||||||
|             error_setg(errp, |  | ||||||
|                        "Changing the encryption parameters is not supported"); |  | ||||||
|             return -ENOTSUP; |  | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_CLUSTER_SIZE)) { |  | ||||||
|             cluster_size = qemu_opt_get_size(opts, BLOCK_OPT_CLUSTER_SIZE, |  | ||||||
|                                              cluster_size); |  | ||||||
|             if (cluster_size != s->cluster_size) { |  | ||||||
|                 error_setg(errp, "Changing the cluster size is not supported"); |  | ||||||
|                 return -ENOTSUP; |  | ||||||
|             } |  | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_LAZY_REFCOUNTS)) { |         } else if (!strcmp(desc->name, BLOCK_OPT_LAZY_REFCOUNTS)) { | ||||||
|             lazy_refcounts = qemu_opt_get_bool(opts, BLOCK_OPT_LAZY_REFCOUNTS, |             lazy_refcounts = qemu_opt_get_bool(opts, BLOCK_OPT_LAZY_REFCOUNTS, | ||||||
|                                                lazy_refcounts); |                                                lazy_refcounts); | ||||||
| @@ -5455,22 +5409,6 @@ static int qcow2_amend_options(BlockDriverState *bs, QemuOpts *opts, | |||||||
|                                  "images"); |                                  "images"); | ||||||
|                 return -EINVAL; |                 return -EINVAL; | ||||||
|             } |             } | ||||||
|         } else if (!strcmp(desc->name, BLOCK_OPT_COMPRESSION_TYPE)) { |  | ||||||
|             const char *ct_name = |  | ||||||
|                 qemu_opt_get(opts, BLOCK_OPT_COMPRESSION_TYPE); |  | ||||||
|             int compression_type = |  | ||||||
|                 qapi_enum_parse(&Qcow2CompressionType_lookup, ct_name, -1, |  | ||||||
|                                 NULL); |  | ||||||
|             if (compression_type == -1) { |  | ||||||
|                 error_setg(errp, "Unknown compression type: %s", ct_name); |  | ||||||
|                 return -ENOTSUP; |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             if (compression_type != s->compression_type) { |  | ||||||
|                 error_setg(errp, "Changing the compression type " |  | ||||||
|                                  "is not supported"); |  | ||||||
|                 return -ENOTSUP; |  | ||||||
|             } |  | ||||||
|         } else { |         } else { | ||||||
|             /* if this point is reached, this probably means a new option was |             /* if this point is reached, this probably means a new option was | ||||||
|              * added without having it covered here */ |              * added without having it covered here */ | ||||||
| @@ -5692,37 +5630,6 @@ void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t offset, | |||||||
|         .help = "The external data file must stay valid "           \ |         .help = "The external data file must stay valid "           \ | ||||||
|                 "as a raw image"                                    \ |                 "as a raw image"                                    \ | ||||||
|     },                                                              \ |     },                                                              \ | ||||||
|     {                                                               \ |  | ||||||
|         .name = BLOCK_OPT_ENCRYPT,                                  \ |  | ||||||
|         .type = QEMU_OPT_BOOL,                                      \ |  | ||||||
|         .help = "Encrypt the image with format 'aes'. (Deprecated " \ |  | ||||||
|                 "in favor of " BLOCK_OPT_ENCRYPT_FORMAT "=aes)",    \ |  | ||||||
|     },                                                              \ |  | ||||||
|     {                                                               \ |  | ||||||
|         .name = BLOCK_OPT_ENCRYPT_FORMAT,                           \ |  | ||||||
|         .type = QEMU_OPT_STRING,                                    \ |  | ||||||
|         .help = "Encrypt the image, format choices: 'aes', 'luks'", \ |  | ||||||
|     },                                                              \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_KEY_SECRET("encrypt.",                     \ |  | ||||||
|         "ID of secret providing qcow AES key or LUKS passphrase"),  \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_CIPHER_ALG("encrypt."),               \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_CIPHER_MODE("encrypt."),              \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_IVGEN_ALG("encrypt."),                \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_IVGEN_HASH_ALG("encrypt."),           \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_HASH_ALG("encrypt."),                 \ |  | ||||||
|     BLOCK_CRYPTO_OPT_DEF_LUKS_ITER_TIME("encrypt."),                \ |  | ||||||
|     {                                                               \ |  | ||||||
|         .name = BLOCK_OPT_CLUSTER_SIZE,                             \ |  | ||||||
|         .type = QEMU_OPT_SIZE,                                      \ |  | ||||||
|         .help = "qcow2 cluster size",                               \ |  | ||||||
|         .def_value_str = stringify(DEFAULT_CLUSTER_SIZE)            \ |  | ||||||
|     },                                                              \ |  | ||||||
|     {                                                               \ |  | ||||||
|         .name = BLOCK_OPT_PREALLOC,                                 \ |  | ||||||
|         .type = QEMU_OPT_STRING,                                    \ |  | ||||||
|         .help = "Preallocation mode (allowed values: off, "         \ |  | ||||||
|                 "metadata, falloc, full)"                           \ |  | ||||||
|     },                                                              \ |  | ||||||
|     {                                                               \ |     {                                                               \ | ||||||
|         .name = BLOCK_OPT_LAZY_REFCOUNTS,                           \ |         .name = BLOCK_OPT_LAZY_REFCOUNTS,                           \ | ||||||
|         .type = QEMU_OPT_BOOL,                                      \ |         .type = QEMU_OPT_BOOL,                                      \ | ||||||
| @@ -5734,19 +5641,50 @@ void qcow2_signal_corruption(BlockDriverState *bs, bool fatal, int64_t offset, | |||||||
|         .type = QEMU_OPT_NUMBER,                                    \ |         .type = QEMU_OPT_NUMBER,                                    \ | ||||||
|         .help = "Width of a reference count entry in bits",         \ |         .help = "Width of a reference count entry in bits",         \ | ||||||
|         .def_value_str = "16"                                       \ |         .def_value_str = "16"                                       \ | ||||||
|     },                                                              \ |  | ||||||
|     {                                                               \ |  | ||||||
|         .name = BLOCK_OPT_COMPRESSION_TYPE,                         \ |  | ||||||
|         .type = QEMU_OPT_STRING,                                    \ |  | ||||||
|         .help = "Compression method used for image cluster "        \ |  | ||||||
|                 "compression",                                      \ |  | ||||||
|         .def_value_str = "zlib"                                     \ |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
| static QemuOptsList qcow2_create_opts = { | static QemuOptsList qcow2_create_opts = { | ||||||
|     .name = "qcow2-create-opts", |     .name = "qcow2-create-opts", | ||||||
|     .head = QTAILQ_HEAD_INITIALIZER(qcow2_create_opts.head), |     .head = QTAILQ_HEAD_INITIALIZER(qcow2_create_opts.head), | ||||||
|     .desc = { |     .desc = { | ||||||
|  |         {                                                               \ | ||||||
|  |             .name = BLOCK_OPT_ENCRYPT,                                  \ | ||||||
|  |             .type = QEMU_OPT_BOOL,                                      \ | ||||||
|  |             .help = "Encrypt the image with format 'aes'. (Deprecated " \ | ||||||
|  |                     "in favor of " BLOCK_OPT_ENCRYPT_FORMAT "=aes)",    \ | ||||||
|  |         },                                                              \ | ||||||
|  |         {                                                               \ | ||||||
|  |             .name = BLOCK_OPT_ENCRYPT_FORMAT,                           \ | ||||||
|  |             .type = QEMU_OPT_STRING,                                    \ | ||||||
|  |             .help = "Encrypt the image, format choices: 'aes', 'luks'", \ | ||||||
|  |         },                                                              \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_KEY_SECRET("encrypt.",                     \ | ||||||
|  |             "ID of secret providing qcow AES key or LUKS passphrase"),  \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_CIPHER_ALG("encrypt."),               \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_CIPHER_MODE("encrypt."),              \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_IVGEN_ALG("encrypt."),                \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_IVGEN_HASH_ALG("encrypt."),           \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_HASH_ALG("encrypt."),                 \ | ||||||
|  |         BLOCK_CRYPTO_OPT_DEF_LUKS_ITER_TIME("encrypt."),                \ | ||||||
|  |         {                                                               \ | ||||||
|  |             .name = BLOCK_OPT_CLUSTER_SIZE,                             \ | ||||||
|  |             .type = QEMU_OPT_SIZE,                                      \ | ||||||
|  |             .help = "qcow2 cluster size",                               \ | ||||||
|  |             .def_value_str = stringify(DEFAULT_CLUSTER_SIZE)            \ | ||||||
|  |         },                                                              \ | ||||||
|  |         {                                                               \ | ||||||
|  |             .name = BLOCK_OPT_PREALLOC,                                 \ | ||||||
|  |             .type = QEMU_OPT_STRING,                                    \ | ||||||
|  |             .help = "Preallocation mode (allowed values: off, "         \ | ||||||
|  |                     "metadata, falloc, full)"                           \ | ||||||
|  |         },                                                              \ | ||||||
|  |         {                                                               \ | ||||||
|  |             .name = BLOCK_OPT_COMPRESSION_TYPE,                         \ | ||||||
|  |             .type = QEMU_OPT_STRING,                                    \ | ||||||
|  |             .help = "Compression method used for image cluster "        \ | ||||||
|  |                     "compression",                                      \ | ||||||
|  |             .def_value_str = "zlib"                                     \ | ||||||
|  |         }, | ||||||
|         QCOW_COMMON_OPTIONS, |         QCOW_COMMON_OPTIONS, | ||||||
|         { /* end of list */ } |         { /* end of list */ } | ||||||
|     } |     } | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								qemu-img.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								qemu-img.c
									
									
									
									
									
								
							| @@ -4071,9 +4071,8 @@ static int print_amend_option_help(const char *format) | |||||||
|     /* Every driver supporting amendment must have amend_opts */ |     /* Every driver supporting amendment must have amend_opts */ | ||||||
|     assert(drv->amend_opts); |     assert(drv->amend_opts); | ||||||
|  |  | ||||||
|     printf("Creation options for '%s':\n", format); |     printf("Amend options for '%s':\n", format); | ||||||
|     qemu_opts_print_help(drv->amend_opts, false); |     qemu_opts_print_help(drv->amend_opts, false); | ||||||
|     printf("\nNote that not all of these options may be amendable.\n"); |  | ||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -4219,7 +4218,22 @@ static int img_amend(int argc, char **argv) | |||||||
|     amend_opts = qemu_opts_append(amend_opts, bs->drv->amend_opts); |     amend_opts = qemu_opts_append(amend_opts, bs->drv->amend_opts); | ||||||
|     opts = qemu_opts_create(amend_opts, NULL, 0, &error_abort); |     opts = qemu_opts_create(amend_opts, NULL, 0, &error_abort); | ||||||
|     qemu_opts_do_parse(opts, options, NULL, &err); |     qemu_opts_do_parse(opts, options, NULL, &err); | ||||||
|  |  | ||||||
|     if (err) { |     if (err) { | ||||||
|  |         /* Try to parse options using the create options */ | ||||||
|  |         Error *err1 = NULL; | ||||||
|  |         amend_opts = qemu_opts_append(amend_opts, bs->drv->create_opts); | ||||||
|  |         qemu_opts_del(opts); | ||||||
|  |         opts = qemu_opts_create(amend_opts, NULL, 0, &error_abort); | ||||||
|  |         qemu_opts_do_parse(opts, options, NULL, &err1); | ||||||
|  |  | ||||||
|  |         if (!err1) { | ||||||
|  |             error_append_hint(&err, | ||||||
|  |                               "This option is only supported for image creation\n"); | ||||||
|  |         } else { | ||||||
|  |             error_free(err1); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         error_report_err(err); |         error_report_err(err); | ||||||
|         ret = -1; |         ret = -1; | ||||||
|         goto out; |         goto out; | ||||||
|   | |||||||
| @@ -4,90 +4,90 @@ QA output created by 049 | |||||||
| == 1. Traditional size parameter == | == 1. Traditional size parameter == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024 | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024b | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024b | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1k | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1k | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1K | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1K | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1M | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1048576 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1048576 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1G | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1G | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1073741824 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1073741824 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1T | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1T | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1099511627776 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1099511627776 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024.0 | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024.0 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024.0b | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1024.0b | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5k | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5k | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1536 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1536 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5K | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5K | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1536 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1536 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5M | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1572864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1572864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5G | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5G | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1610612736 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1610612736 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5T | qemu-img create -f qcow2 TEST_DIR/t.qcow2 1.5T | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1649267441664 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1649267441664 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == 2. Specifying size via -o == | == 2. Specifying size via -o == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1024 TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1024 TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1024b TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1024b TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1k TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1k TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1K TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1K TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1M TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1M TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1048576 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1048576 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1G TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1G TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1073741824 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1073741824 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1T TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1T TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1099511627776 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1099511627776 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1024.0 TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1024.0 TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1024.0b TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1024.0b TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1024 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1024 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1.5k TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1.5k TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1536 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1536 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1.5K TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1.5K TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1536 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1536 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1.5M TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1.5M TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1572864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1572864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1.5G TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1.5G TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1610612736 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1610612736 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o size=1.5T TEST_DIR/t.qcow2 | qemu-img create -f qcow2 -o size=1.5T TEST_DIR/t.qcow2 | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=1649267441664 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1649267441664 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == 3. Invalid sizes == | == 3. Invalid sizes == | ||||||
|  |  | ||||||
| @@ -129,84 +129,84 @@ qemu-img: TEST_DIR/t.qcow2: The image size must be specified only once | |||||||
| == Check correct interpretation of suffixes for cluster size == | == Check correct interpretation of suffixes for cluster size == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1024 TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1024 TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1024b TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1024b TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1k TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1k TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1K TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1K TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1M TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1M TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1048576 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1048576 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1024.0 TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1024.0 TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=1024.0b TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=1024.0b TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=1024 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=1024 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=0.5k TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=0.5k TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=512 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=512 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=0.5K TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=0.5K TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=512 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=512 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o cluster_size=0.5M TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o cluster_size=0.5M TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=524288 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=524288 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == Check compat level option == | == Check compat level option == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o compat=0.10 TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=0.10 TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.10 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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=1.1 TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=1.1 TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=1.1 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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 create -f qcow2 -o compat=0.42 TEST_DIR/t.qcow2 64M | ||||||
| qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42' | qemu-img: TEST_DIR/t.qcow2: Invalid parameter '0.42' | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.42 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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 create -f qcow2 -o compat=foobar TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=foobar TEST_DIR/t.qcow2 64M | ||||||
| qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar' | qemu-img: TEST_DIR/t.qcow2: Invalid parameter 'foobar' | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=foobar cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=foobar lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == Check preallocation option == | == Check preallocation option == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o preallocation=off TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o preallocation=off TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preallocation=off lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 preallocation=off compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o preallocation=metadata TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o preallocation=metadata TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preallocation=metadata lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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 create -f qcow2 -o preallocation=1234 TEST_DIR/t.qcow2 64M | ||||||
| qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234' | qemu-img: TEST_DIR/t.qcow2: Invalid parameter '1234' | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 cluster_size=65536 preallocation=1234 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 preallocation=1234 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == Check encryption option == | == Check encryption option == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o encryption=off TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o encryption=off TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=off cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 encryption=off cluster_size=65536 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 --object secret,id=sec0,data=123456 -o encryption=on,encrypt.key-secret=sec0 TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 encryption=on encrypt.key-secret=sec0 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 encryption=on encrypt.key-secret=sec0 cluster_size=65536 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| == Check lazy_refcounts option (only with v3) == | == Check lazy_refcounts option (only with v3) == | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o compat=1.1,lazy_refcounts=off TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=1.1,lazy_refcounts=off TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=1.1 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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=1.1,lazy_refcounts=on TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=1.1,lazy_refcounts=on TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=1.1 cluster_size=65536 lazy_refcounts=on refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=1.1 lazy_refcounts=on refcount_bits=16 | ||||||
|  |  | ||||||
| qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=off TEST_DIR/t.qcow2 64M | qemu-img create -f qcow2 -o compat=0.10,lazy_refcounts=off TEST_DIR/t.qcow2 64M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 compat=0.10 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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 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) | 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 size=67108864 compat=0.10 cluster_size=65536 lazy_refcounts=on refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 compat=0.10 lazy_refcounts=on refcount_bits=16 | ||||||
|  |  | ||||||
| *** done | *** done | ||||||
|   | |||||||
| @@ -381,16 +381,20 @@ qemu-img: Lazy refcounts only supported with compatibility level 1.1 and above ( | |||||||
| qemu-img: Lazy refcounts only supported with compatibility level 1.1 and above (use compat=1.1 or greater) | qemu-img: Lazy refcounts only supported with compatibility level 1.1 and above (use compat=1.1 or greater) | ||||||
| qemu-img: Unknown compatibility level 0.42 | qemu-img: Unknown compatibility level 0.42 | ||||||
| qemu-img: Invalid parameter 'foo' | qemu-img: Invalid parameter 'foo' | ||||||
| qemu-img: Changing the cluster size is not supported | qemu-img: Invalid parameter 'cluster_size' | ||||||
| qemu-img: Changing the encryption flag is not supported | This option is only supported for image creation | ||||||
| qemu-img: Cannot change preallocation mode | qemu-img: Invalid parameter 'encryption' | ||||||
|  | This option is only supported for image creation | ||||||
|  | qemu-img: Invalid parameter 'preallocation' | ||||||
|  | This option is only supported for image creation | ||||||
|  |  | ||||||
| === Testing correct handling of unset value === | === Testing correct handling of unset value === | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 | Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=67108864 | ||||||
| Should work: | Should work: | ||||||
| Should not work: | Should not work: | ||||||
| qemu-img: Changing the cluster size is not supported | qemu-img: Invalid parameter 'cluster_size' | ||||||
|  | This option is only supported for image creation | ||||||
|  |  | ||||||
| === Testing zero expansion on inactive clusters === | === Testing zero expansion on inactive clusters === | ||||||
|  |  | ||||||
|   | |||||||
| @@ -3,14 +3,14 @@ QA output created by 082 | |||||||
| === create: Options specified more than once === | === create: Options specified more than once === | ||||||
|  |  | ||||||
| Testing: create -f foo -f qcow2 TEST_DIR/t.qcow2 128M | Testing: create -f foo -f qcow2 TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
| image: TEST_DIR/t.IMGFMT | image: TEST_DIR/t.IMGFMT | ||||||
| file format: IMGFMT | file format: IMGFMT | ||||||
| virtual size: 128 MiB (134217728 bytes) | virtual size: 128 MiB (134217728 bytes) | ||||||
| cluster_size: 65536 | cluster_size: 65536 | ||||||
|  |  | ||||||
| Testing: create -f qcow2 -o cluster_size=4k -o lazy_refcounts=on TEST_DIR/t.qcow2 128M | Testing: create -f qcow2 -o cluster_size=4k -o lazy_refcounts=on TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 cluster_size=4096 lazy_refcounts=on refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=4096 compression_type=zlib size=134217728 lazy_refcounts=on refcount_bits=16 | ||||||
| image: TEST_DIR/t.IMGFMT | image: TEST_DIR/t.IMGFMT | ||||||
| file format: IMGFMT | file format: IMGFMT | ||||||
| virtual size: 128 MiB (134217728 bytes) | virtual size: 128 MiB (134217728 bytes) | ||||||
| @@ -23,7 +23,7 @@ Format specific information: | |||||||
|     corrupt: false |     corrupt: false | ||||||
|  |  | ||||||
| Testing: create -f qcow2 -o cluster_size=4k -o lazy_refcounts=on -o cluster_size=8k TEST_DIR/t.qcow2 128M | Testing: create -f qcow2 -o cluster_size=4k -o lazy_refcounts=on -o cluster_size=8k TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 cluster_size=8192 lazy_refcounts=on refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=8192 compression_type=zlib size=134217728 lazy_refcounts=on refcount_bits=16 | ||||||
| image: TEST_DIR/t.IMGFMT | image: TEST_DIR/t.IMGFMT | ||||||
| file format: IMGFMT | file format: IMGFMT | ||||||
| virtual size: 128 MiB (134217728 bytes) | virtual size: 128 MiB (134217728 bytes) | ||||||
| @@ -36,7 +36,7 @@ Format specific information: | |||||||
|     corrupt: false |     corrupt: false | ||||||
|  |  | ||||||
| Testing: create -f qcow2 -o cluster_size=4k,cluster_size=8k TEST_DIR/t.qcow2 128M | Testing: create -f qcow2 -o cluster_size=4k,cluster_size=8k TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 cluster_size=8192 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=8192 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
| image: TEST_DIR/t.IMGFMT | image: TEST_DIR/t.IMGFMT | ||||||
| file format: IMGFMT | file format: IMGFMT | ||||||
| virtual size: 128 MiB (134217728 bytes) | virtual size: 128 MiB (134217728 bytes) | ||||||
| @@ -237,10 +237,10 @@ Supported options: | |||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 128M | 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 size=134217728 backing_file=TEST_DIR/t.qcow2,,help cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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,,? TEST_DIR/t.qcow2 128M | Testing: create -f qcow2 -u -o backing_file=TEST_DIR/t.qcow2,,? TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2,,? cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | 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 -o backing_file=TEST_DIR/t.qcow2, -o help TEST_DIR/t.qcow2 128M | 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, | qemu-img: Invalid option list: backing_file=TEST_DIR/t.qcow2, | ||||||
| @@ -290,7 +290,7 @@ qemu-img: Format driver 'bochs' does not support image creation | |||||||
| === convert: Options specified more than once === | === convert: Options specified more than once === | ||||||
|  |  | ||||||
| Testing: create -f qcow2 TEST_DIR/t.qcow2 128M | Testing: create -f qcow2 TEST_DIR/t.qcow2 128M | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Testing: convert -f foo -f qcow2 TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base | Testing: convert -f foo -f qcow2 TEST_DIR/t.qcow2 TEST_DIR/t.qcow2.base | ||||||
| image: TEST_DIR/t.IMGFMT.base | image: TEST_DIR/t.IMGFMT.base | ||||||
| @@ -639,205 +639,93 @@ cluster_size: 65536 | |||||||
| === amend: help for -o === | === amend: help for -o === | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o help TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o help TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o ? TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o ? TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o cluster_size=4k,help TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o cluster_size=4k,help TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o cluster_size=4k,? TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o cluster_size=4k,? TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o help,cluster_size=4k TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o help,cluster_size=4k TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o ?,cluster_size=4k TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o ?,cluster_size=4k TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o cluster_size=4k -o help TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o cluster_size=4k -o help TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o cluster_size=4k -o ? TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o cluster_size=4k -o ? TEST_DIR/t.qcow2 | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 | Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2,,help TEST_DIR/t.qcow2 | ||||||
|  |  | ||||||
| Testing: rebase -u -b  -f qcow2 TEST_DIR/t.qcow2 | Testing: rebase -u -b  -f qcow2 TEST_DIR/t.qcow2 | ||||||
| @@ -856,30 +744,16 @@ Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2 -o ,, -o help TEST_DIR/ | |||||||
| qemu-img: Invalid option list: ,, | qemu-img: Invalid option list: ,, | ||||||
|  |  | ||||||
| Testing: amend -f qcow2 -o help | Testing: amend -f qcow2 -o help | ||||||
| Creation options for 'qcow2': | Amend options for 'qcow2': | ||||||
|   backing_file=<str>     - File name of a base image |   backing_file=<str>     - File name of a base image | ||||||
|   backing_fmt=<str>      - Image format of the base image |   backing_fmt=<str>      - Image format of the base image | ||||||
|   cluster_size=<size>    - qcow2 cluster size |  | ||||||
|   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) |   compat=<str>           - Compatibility level (v2 [0.10] or v3 [1.1]) | ||||||
|   compression_type=<str> - Compression method used for image cluster compression |  | ||||||
|   data_file=<str>        - File name of an external data file |   data_file=<str>        - File name of an external data file | ||||||
|   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image |   data_file_raw=<bool (on/off)> - The external data file must stay valid as a raw image | ||||||
|   encrypt.cipher-alg=<str> - Name of encryption cipher algorithm |  | ||||||
|   encrypt.cipher-mode=<str> - Name of encryption cipher mode |  | ||||||
|   encrypt.format=<str>   - Encrypt the image, format choices: 'aes', 'luks' |  | ||||||
|   encrypt.hash-alg=<str> - Name of encryption hash algorithm |  | ||||||
|   encrypt.iter-time=<num> - Time to spend in PBKDF in milliseconds |  | ||||||
|   encrypt.ivgen-alg=<str> - Name of IV generator algorithm |  | ||||||
|   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) |  | ||||||
|   lazy_refcounts=<bool (on/off)> - Postpone refcount updates |   lazy_refcounts=<bool (on/off)> - Postpone refcount updates | ||||||
|   preallocation=<str>    - Preallocation mode (allowed values: off, metadata, falloc, full) |  | ||||||
|   refcount_bits=<num>    - Width of a reference count entry in bits |   refcount_bits=<num>    - Width of a reference count entry in bits | ||||||
|   size=<size>            - Virtual disk size |   size=<size>            - Virtual disk size | ||||||
|  |  | ||||||
| Note that not all of these options may be amendable. |  | ||||||
|  |  | ||||||
| Testing: amend -o help | Testing: amend -o help | ||||||
| qemu-img: Expecting one image file name | qemu-img: Expecting one image file name | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Formatting 'TEST_DIR/t.IMGFMT.2', fmt=IMGFMT size=134217728 | |||||||
| === Create a single snapshot on virtio0 === | === Create a single snapshot on virtio0 === | ||||||
|  |  | ||||||
| { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } | { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/1-snapshot-v0.IMGFMT', 'format': 'IMGFMT' } } | ||||||
| Formatting 'TEST_DIR/1-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2.1 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/1-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2.1 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
|  |  | ||||||
| === Invalid command - missing device and nodename === | === Invalid command - missing device and nodename === | ||||||
| @@ -30,40 +30,40 @@ Formatting 'TEST_DIR/1-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file | |||||||
| === Create several transactional group snapshots === | === Create several transactional group snapshots === | ||||||
|  |  | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/2-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/2-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/2-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/2-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/2-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/1-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/2-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/1-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/2-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/t.qcow2.2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/2-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/t.qcow2.2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/3-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/3-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/3-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/3-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/3-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/2-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/3-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/2-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/3-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/2-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/3-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/2-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/4-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/4-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/4-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/4-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/4-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/3-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/4-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/3-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/4-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/3-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/4-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/3-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/5-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/5-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/5-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/5-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/5-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/4-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/5-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/4-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/5-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/4-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/5-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/4-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/6-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/6-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/6-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/6-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/6-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/5-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/6-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/5-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/6-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/5-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/6-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/5-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/7-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/7-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/7-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/7-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/7-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/6-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/7-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/6-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/7-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/6-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/7-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/6-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/8-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/8-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/8-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/8-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/8-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/7-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/8-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/7-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/8-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/7-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/8-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/7-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/9-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/9-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/9-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/9-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/9-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/8-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/9-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/8-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/9-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/8-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/9-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/8-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/10-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/10-snapshot-v1.IMGFMT' } } ] } } | { 'execute': 'transaction', 'arguments': {'actions': [ { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio0', 'snapshot-file': 'TEST_DIR/10-snapshot-v0.IMGFMT' } }, { 'type': 'blockdev-snapshot-sync', 'data' : { 'device': 'virtio1', 'snapshot-file': 'TEST_DIR/10-snapshot-v1.IMGFMT' } } ] } } | ||||||
| Formatting 'TEST_DIR/10-snapshot-v0.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/9-snapshot-v0.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/10-snapshot-v0.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/9-snapshot-v0.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 size=134217728 backing_file=TEST_DIR/9-snapshot-v1.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/10-snapshot-v1.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 backing_file=TEST_DIR/9-snapshot-v1.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
|  |  | ||||||
| === Create a couple of snapshots using blockdev-snapshot === | === Create a couple of snapshots using blockdev-snapshot === | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=536870912 | |||||||
| { 'execute': 'qmp_capabilities' } | { 'execute': 'qmp_capabilities' } | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp.IMGFMT', 'format': 'IMGFMT' } } | { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp.IMGFMT', 'format': 'IMGFMT' } } | ||||||
| Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
|  |  | ||||||
| === Performing block-commit on active layer === | === Performing block-commit on active layer === | ||||||
| @@ -31,6 +31,6 @@ Formatting 'TEST_DIR/tmp.qcow2', fmt=qcow2 size=536870912 backing_file=TEST_DIR/ | |||||||
| === Performing Live Snapshot 2 === | === Performing Live Snapshot 2 === | ||||||
|  |  | ||||||
| { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp2.IMGFMT', 'format': 'IMGFMT' } } | { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'virtio0', 'snapshot-file':'TEST_DIR/tmp2.IMGFMT', 'format': 'IMGFMT' } } | ||||||
| Formatting 'TEST_DIR/tmp2.qcow2', fmt=qcow2 size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/tmp2.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=536870912 backing_file=TEST_DIR/t.qcow2 backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| *** done | *** done | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Is another process using the image [TEST_DIR/t.qcow2]? | |||||||
| {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node0', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } | {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node0', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } | ||||||
| {"return": {}} | {"return": {}} | ||||||
| {'execute': 'blockdev-snapshot-sync', 'arguments': { 'node-name': 'node0', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'snapshot-node-name': 'node1' } } | {'execute': 'blockdev-snapshot-sync', 'arguments': { 'node-name': 'node0', 'snapshot-file': 'TEST_DIR/t.IMGFMT.overlay', 'snapshot-node-name': 'node1' } } | ||||||
| Formatting 'TEST_DIR/t.qcow2.overlay', fmt=qcow2 size=197120 backing_file=TEST_DIR/t.qcow2 backing_fmt=file cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2.overlay', fmt=qcow2 cluster_size=65536 compression_type=zlib size=197120 backing_file=TEST_DIR/t.qcow2 backing_fmt=file lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node1', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } | {'execute': 'blockdev-add', 'arguments': { 'node-name': 'node1', 'driver': 'file', 'filename': 'TEST_DIR/t.IMGFMT', 'locking': 'on' } } | ||||||
| {"return": {}} | {"return": {}} | ||||||
|   | |||||||
| @@ -9,14 +9,14 @@ Formatting 'TEST_DIR/t.IMGFMT.base', fmt=IMGFMT size=67108864 | |||||||
| === Creating backing chain === | === Creating backing chain === | ||||||
|  |  | ||||||
| { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT.mid', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } | { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT.mid', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } | ||||||
| Formatting 'TEST_DIR/t.qcow2.mid', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.qcow2.base backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2.mid', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 backing_file=TEST_DIR/t.qcow2.base backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write 0 4M"' } } | { 'execute': 'human-monitor-command', 'arguments': { 'command-line': 'qemu-io disk "write 0 4M"' } } | ||||||
| wrote 4194304/4194304 bytes at offset 0 | wrote 4194304/4194304 bytes at offset 0 | ||||||
| 4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 4 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| {"return": ""} | {"return": ""} | ||||||
| { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } | { 'execute': 'blockdev-snapshot-sync', 'arguments': { 'device': 'disk', 'snapshot-file': 'TEST_DIR/t.IMGFMT', 'format': 'IMGFMT', 'mode': 'absolute-paths' } } | ||||||
| Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.qcow2.mid backing_fmt=qcow2 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 backing_file=TEST_DIR/t.qcow2.mid backing_fmt=qcow2 lazy_refcounts=off refcount_bits=16 | ||||||
| {"return": {}} | {"return": {}} | ||||||
|  |  | ||||||
| === Start commit job and exit qemu === | === Start commit job and exit qemu === | ||||||
| @@ -48,7 +48,7 @@ Formatting 'TEST_DIR/t.qcow2', fmt=qcow2 size=67108864 backing_file=TEST_DIR/t.q | |||||||
| { 'execute': 'qmp_capabilities' } | { 'execute': 'qmp_capabilities' } | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'drive-mirror', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } | { 'execute': 'drive-mirror', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } | ||||||
| Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} | {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} | ||||||
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} | {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} | ||||||
| {"return": {}} | {"return": {}} | ||||||
| @@ -62,7 +62,7 @@ Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 l | |||||||
| { 'execute': 'qmp_capabilities' } | { 'execute': 'qmp_capabilities' } | ||||||
| {"return": {}} | {"return": {}} | ||||||
| { 'execute': 'drive-backup', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } | { 'execute': 'drive-backup', 'arguments': { 'device': 'disk', 'target': 'TEST_DIR/t.IMGFMT.copy', 'format': 'IMGFMT', 'sync': 'full', 'speed': 65536 } } | ||||||
| Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/t.qcow2.copy', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} | {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "created", "id": "disk"}} | ||||||
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} | {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "running", "id": "disk"}} | ||||||
| {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "paused", "id": "disk"}} | {"timestamp": {"seconds":  TIMESTAMP, "microseconds":  TIMESTAMP}, "event": "JOB_STATUS_CHANGE", "data": {"status": "paused", "id": "disk"}} | ||||||
|   | |||||||
| @@ -3,9 +3,9 @@ Finishing a commit job with background reads | |||||||
|  |  | ||||||
| === Create backing chain and start VM === | === Create backing chain and start VM === | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-t.qcow2.mid', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-t.qcow2.mid', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-t.qcow2', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-t.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| === Start background read requests === | === Start background read requests === | ||||||
|  |  | ||||||
| @@ -23,9 +23,9 @@ Closing the VM while a job is being cancelled | |||||||
|  |  | ||||||
| === Create images and start VM === | === Create images and start VM === | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-src.qcow2', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-src.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-dst.qcow2', fmt=qcow2 size=134217728 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-dst.qcow2', fmt=qcow2 cluster_size=65536 compression_type=zlib size=134217728 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 1048576/1048576 bytes at offset 0 | wrote 1048576/1048576 bytes at offset 0 | ||||||
| 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| == Commit tests == | == Commit tests == | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-mid', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1048576 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 backing_file=TEST_DIR/PID-mid lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 2097152/2097152 bytes at offset 0 | wrote 2097152/2097152 bytes at offset 0 | ||||||
| 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -64,11 +64,11 @@ read 1048576/1048576 bytes at offset 1048576 | |||||||
| 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
|  |  | ||||||
| === Testing HMP commit (top -> mid) === | === Testing HMP commit (top -> mid) === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-mid', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1048576 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 backing_file=TEST_DIR/PID-mid lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 2097152/2097152 bytes at offset 0 | wrote 2097152/2097152 bytes at offset 0 | ||||||
| 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -94,11 +94,11 @@ read 1048576/1048576 bytes at offset 1048576 | |||||||
| 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 1 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
|  |  | ||||||
| === Testing QMP active commit (top -> mid) === | === Testing QMP active commit (top -> mid) === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=2097152 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-mid', fmt=qcow2 size=1048576 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-mid', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1048576 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=2097152 backing_file=TEST_DIR/PID-mid cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=2097152 backing_file=TEST_DIR/PID-mid lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 2097152/2097152 bytes at offset 0 | wrote 2097152/2097152 bytes at offset 0 | ||||||
| 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 2 MiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -131,9 +131,9 @@ read 1048576/1048576 bytes at offset 1048576 | |||||||
|  |  | ||||||
| == Resize tests == | == Resize tests == | ||||||
| === preallocation=off === | === preallocation=off === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=6442450944 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=6442450944 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=1073741824 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=1073741824 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 5368709120 | wrote 65536/65536 bytes at offset 5368709120 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -150,9 +150,9 @@ read 65536/65536 bytes at offset 5368709120 | |||||||
| { "start": 1073741824, "length": 7516192768, "depth": 0, "zero": true, "data": false}] | { "start": 1073741824, "length": 7516192768, "depth": 0, "zero": true, "data": false}] | ||||||
|  |  | ||||||
| === preallocation=metadata === | === preallocation=metadata === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=34359738368 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=34359738368 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=32212254720 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=32212254720 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 33285996544 | wrote 65536/65536 bytes at offset 33285996544 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -174,9 +174,9 @@ read 65536/65536 bytes at offset 33285996544 | |||||||
| { "start": 34896609280, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 2685075456}] | { "start": 34896609280, "length": 536870912, "depth": 0, "zero": true, "data": false, "offset": 2685075456}] | ||||||
|  |  | ||||||
| === preallocation=falloc === | === preallocation=falloc === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=10485760 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=10485760 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=5242880 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=5242880 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 9437184 | wrote 65536/65536 bytes at offset 9437184 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -193,9 +193,9 @@ read 65536/65536 bytes at offset 9437184 | |||||||
| { "start": 5242880, "length": 10485760, "depth": 0, "zero": false, "data": true, "offset": 327680}] | { "start": 5242880, "length": 10485760, "depth": 0, "zero": false, "data": true, "offset": 327680}] | ||||||
|  |  | ||||||
| === preallocation=full === | === preallocation=full === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=16777216 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=16777216 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=8388608 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=8388608 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 11534336 | wrote 65536/65536 bytes at offset 11534336 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -212,9 +212,9 @@ read 65536/65536 bytes at offset 11534336 | |||||||
| { "start": 8388608, "length": 4194304, "depth": 0, "zero": false, "data": true, "offset": 327680}] | { "start": 8388608, "length": 4194304, "depth": 0, "zero": false, "data": true, "offset": 327680}] | ||||||
|  |  | ||||||
| === preallocation=off === | === preallocation=off === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=393216 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=393216 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=259072 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=259072 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 259072 | wrote 65536/65536 bytes at offset 259072 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -232,9 +232,9 @@ read 65536/65536 bytes at offset 259072 | |||||||
| { "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}] | { "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}] | ||||||
|  |  | ||||||
| === preallocation=off === | === preallocation=off === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=409600 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=409600 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=262144 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 344064 | wrote 65536/65536 bytes at offset 344064 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
| @@ -251,9 +251,9 @@ read 65536/65536 bytes at offset 344064 | |||||||
| { "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}] | { "start": 262144, "length": 262144, "depth": 0, "zero": true, "data": false}] | ||||||
|  |  | ||||||
| === preallocation=off === | === preallocation=off === | ||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=524288 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=524288 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| Formatting 'TEST_DIR/PID-top', fmt=qcow2 size=262144 backing_file=TEST_DIR/PID-base cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-top', fmt=qcow2 cluster_size=65536 compression_type=zlib size=262144 backing_file=TEST_DIR/PID-base lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| wrote 65536/65536 bytes at offset 446464 | wrote 65536/65536 bytes at offset 446464 | ||||||
| 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | 64 KiB, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| Formatting 'TEST_DIR/PID-base', fmt=qcow2 size=67108864 cluster_size=65536 lazy_refcounts=off refcount_bits=16 compression_type=zlib | Formatting 'TEST_DIR/PID-base', fmt=qcow2 cluster_size=65536 compression_type=zlib size=67108864 lazy_refcounts=off refcount_bits=16 | ||||||
|  |  | ||||||
| === Launch VM === | === Launch VM === | ||||||
| Enabling migration QMP events on VM... | Enabling migration QMP events on VM... | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user