239 lines
9.3 KiB
Diff
239 lines
9.3 KiB
Diff
From 267e29969f1e835db7a3fb7d5f9e9befe6e8dcad Mon Sep 17 00:00:00 2001
|
|
From: Max Reitz <mreitz@redhat.com>
|
|
Date: Mon, 18 Jun 2018 14:59:40 +0200
|
|
Subject: [PATCH 067/268] qemu-img: Add print_amend_option_help()
|
|
|
|
RH-Author: Max Reitz <mreitz@redhat.com>
|
|
Message-id: <20180618145943.4489-5-mreitz@redhat.com>
|
|
Patchwork-id: 80753
|
|
O-Subject: [RHV-7.6 qemu-kvm-rhev PATCH 4/7] qemu-img: Add print_amend_option_help()
|
|
Bugzilla: 1537956
|
|
RH-Acked-by: John Snow <jsnow@redhat.com>
|
|
RH-Acked-by: Kevin Wolf <kwolf@redhat.com>
|
|
RH-Acked-by: Stefan Hajnoczi <stefanha@redhat.com>
|
|
|
|
The more generic print_block_option_help() function is not really
|
|
suitable for qemu-img amend, for a couple of reasons:
|
|
(1) We do not need to append the protocol-level options, as amendment
|
|
happens only on one node and does not descend downwards to its
|
|
children.
|
|
(2) print_block_option_help() says those options are "supported". For
|
|
option amendment, we do not really know that. So this new function
|
|
explicitly says that those options are the creation options, and not
|
|
all of them may be supported.
|
|
(3) If the driver does not support option amendment, we should not print
|
|
anything (except for an error message that amendment is not
|
|
supported).
|
|
|
|
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1537956
|
|
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
Reviewed-by: John Snow <jsnow@redhat.com>
|
|
Reviewed-by: Eric Blake <eblake@redhat.com>
|
|
Message-id: 20180509210023.20283-5-mreitz@redhat.com
|
|
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
(cherry picked from commit 51641351420e4f9dc6613d0dd03a5f0f214ed5b6)
|
|
Signed-off-by: Max Reitz <mreitz@redhat.com>
|
|
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
---
|
|
qemu-img.c | 30 ++++++++++++++++++++++++++++--
|
|
tests/qemu-iotests/082.out | 44 +++++++++++++++++++++++++++-----------------
|
|
2 files changed, 55 insertions(+), 19 deletions(-)
|
|
|
|
diff --git a/qemu-img.c b/qemu-img.c
|
|
index cdeb01b..d4cbb63 100644
|
|
--- a/qemu-img.c
|
|
+++ b/qemu-img.c
|
|
@@ -3609,6 +3609,32 @@ static void amend_status_cb(BlockDriverState *bs,
|
|
qemu_progress_print(100.f * offset / total_work_size, 0);
|
|
}
|
|
|
|
+static int print_amend_option_help(const char *format)
|
|
+{
|
|
+ BlockDriver *drv;
|
|
+
|
|
+ /* Find driver and parse its options */
|
|
+ drv = bdrv_find_format(format);
|
|
+ if (!drv) {
|
|
+ error_report("Unknown file format '%s'", format);
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
+ if (!drv->bdrv_amend_options) {
|
|
+ error_report("Format driver '%s' does not support option amendment",
|
|
+ format);
|
|
+ return 1;
|
|
+ }
|
|
+
|
|
+ /* Every driver supporting amendment must have create_opts */
|
|
+ assert(drv->create_opts);
|
|
+
|
|
+ printf("Creation options for '%s':\n", format);
|
|
+ qemu_opts_print_help(drv->create_opts);
|
|
+ printf("\nNote that not all of these options may be amendable.\n");
|
|
+ return 0;
|
|
+}
|
|
+
|
|
static int img_amend(int argc, char **argv)
|
|
{
|
|
Error *err = NULL;
|
|
@@ -3708,7 +3734,7 @@ static int img_amend(int argc, char **argv)
|
|
if (fmt && has_help_option(options)) {
|
|
/* If a format is explicitly specified (and possibly no filename is
|
|
* given), print option help here */
|
|
- ret = print_block_option_help(filename, fmt);
|
|
+ ret = print_amend_option_help(fmt);
|
|
goto out;
|
|
}
|
|
|
|
@@ -3737,7 +3763,7 @@ static int img_amend(int argc, char **argv)
|
|
|
|
if (has_help_option(options)) {
|
|
/* If the format was auto-detected, print option help here */
|
|
- ret = print_block_option_help(filename, fmt);
|
|
+ ret = print_amend_option_help(fmt);
|
|
goto out;
|
|
}
|
|
|
|
diff --git a/tests/qemu-iotests/082.out b/tests/qemu-iotests/082.out
|
|
index 1527fbe..4e52dce 100644
|
|
--- a/tests/qemu-iotests/082.out
|
|
+++ b/tests/qemu-iotests/082.out
|
|
@@ -546,7 +546,7 @@ cluster_size: 65536
|
|
=== amend: help for -o ===
|
|
|
|
Testing: amend -f qcow2 -o help TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -564,10 +564,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o ? TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -585,10 +586,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o cluster_size=4k,help TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -606,10 +608,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o cluster_size=4k,? TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -627,10 +630,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o help,cluster_size=4k TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -648,10 +652,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o ?,cluster_size=4k TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -669,10 +674,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o cluster_size=4k -o help TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -690,10 +696,11 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+Note that not all of these options may be amendable.
|
|
|
|
Testing: amend -f qcow2 -o cluster_size=4k -o ? TEST_DIR/t.qcow2
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -711,7 +718,8 @@ cluster_size qcow2 cluster size
|
|
preallocation Preallocation mode (allowed values: off, metadata, falloc, full)
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
-nocow Turn off copy-on-write (valid only on btrfs)
|
|
+
|
|
+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
|
|
|
|
@@ -731,7 +739,7 @@ Testing: amend -f qcow2 -o backing_file=TEST_DIR/t.qcow2 -o ,, -o help TEST_DIR/
|
|
qemu-img: Invalid option list: ,,
|
|
|
|
Testing: amend -f qcow2 -o help
|
|
-Supported options:
|
|
+Creation options for 'qcow2':
|
|
size Virtual disk size
|
|
compat Compatibility level (0.10 or 1.1)
|
|
backing_file File name of a base image
|
|
@@ -750,6 +758,8 @@ preallocation Preallocation mode (allowed values: off, metadata, falloc, full
|
|
lazy_refcounts Postpone refcount updates
|
|
refcount_bits Width of a reference count entry in bits
|
|
|
|
+Note that not all of these options may be amendable.
|
|
+
|
|
Testing: convert -o help
|
|
Supported options:
|
|
size Virtual disk size
|
|
--
|
|
1.8.3.1
|
|
|