[v2] qemu-img convert: Deprecate using -n and -o together
diff mbox series

Message ID 20190815110623.13646-1-kwolf@redhat.com
State New
Headers show
Series
  • [v2] qemu-img convert: Deprecate using -n and -o together
Related show

Commit Message

Kevin Wolf Aug. 15, 2019, 11:06 a.m. UTC
bdrv_create options specified with -o have no effect when skipping image
creation with -n, so this doesn't make sense. Warn against the misuse
and deprecate the combination so we can make it a hard error later.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---

- Hopefully removed the "finger-wagging" that John saw, without stating
  that the combination doesn't have a well-defined behaviour (because
  skipping image creation and therefore ignoring -o is well-defined
  behaviour).

 qemu-img.c           | 5 +++++
 qemu-deprecated.texi | 7 +++++++
 2 files changed, 12 insertions(+)

Comments

Max Reitz Aug. 15, 2019, 12:31 p.m. UTC | #1
On 15.08.19 13:06, Kevin Wolf wrote:
> bdrv_create options specified with -o have no effect when skipping image
> creation with -n, so this doesn't make sense. Warn against the misuse
> and deprecate the combination so we can make it a hard error later.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> 
> - Hopefully removed the "finger-wagging" that John saw, without stating
>   that the combination doesn't have a well-defined behaviour (because
>   skipping image creation and therefore ignoring -o is well-defined
>   behaviour).

The problem is that e.g. the man page never says that -o gives creation
options.  It says that “options is a [...] list of format specific
options”, nothing more.

>  qemu-img.c           | 5 +++++
>  qemu-deprecated.texi | 7 +++++++
>  2 files changed, 12 insertions(+)

Reviewed-by: Max Reitz <mreitz@redhat.com>
Eric Blake Aug. 15, 2019, 2:55 p.m. UTC | #2
On 8/15/19 6:06 AM, Kevin Wolf wrote:
> bdrv_create options specified with -o have no effect when skipping image
> creation with -n, so this doesn't make sense. Warn against the misuse
> and deprecate the combination so we can make it a hard error later.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---

Reviewed-by: Eric Blake <eblake@redhat.com>
John Snow Aug. 15, 2019, 3:47 p.m. UTC | #3
On 8/15/19 7:06 AM, Kevin Wolf wrote:
> bdrv_create options specified with -o have no effect when skipping image
> creation with -n, so this doesn't make sense. Warn against the misuse
> and deprecate the combination so we can make it a hard error later.
> 
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> 
> - Hopefully removed the "finger-wagging" that John saw, without stating
>   that the combination doesn't have a well-defined behaviour (because
>   skipping image creation and therefore ignoring -o is well-defined
>   behaviour).
> 

I'm sorry if that critique was in itself a finger-wag :( I'm not always
the best with tone in written language myself.

Arguably this is supposed to be my primary language, too.

>  qemu-img.c           | 5 +++++
>  qemu-deprecated.texi | 7 +++++++
>  2 files changed, 12 insertions(+)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 79983772de..d9321f6418 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -2231,6 +2231,11 @@ static int img_convert(int argc, char **argv)
>          goto fail_getopt;
>      }
>  
> +    if (skip_create && options) {
> +        warn_report("-o has no effect when skipping image creation");
> +        warn_report("This will become an error in future QEMU versions.");
> +    }
> +
>      s.src_num = argc - optind - 1;
>      out_filename = s.src_num >= 1 ? argv[argc - 1] : NULL;
>  
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index fff07bb2a3..f7680c08e1 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -305,6 +305,13 @@ to just export the entire image and then mount only /dev/nbd0p1 than
>  it is to reinvoke @command{qemu-nbd -c /dev/nbd0} limited to just a
>  subset of the image.
>  
> +@subsection qemu-img convert -n -o (since 4.2.0)
> +
> +All options specified in @option{-o} are image creation options, so
> +they have no effect when used with @option{-n} to skip image creation.
> +Silently ignored options can be confusing, so this combination of
> +options will be made an error in future versions.
> +
>  @section Build system
>  
>  @subsection Python 2 support (since 4.1.0)
> 

I do think this reads more pleasantly, though, so thank you very much
for that!

Reviewed-by: John Snow <jsnow@redhat.com>

Patch
diff mbox series

diff --git a/qemu-img.c b/qemu-img.c
index 79983772de..d9321f6418 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -2231,6 +2231,11 @@  static int img_convert(int argc, char **argv)
         goto fail_getopt;
     }
 
+    if (skip_create && options) {
+        warn_report("-o has no effect when skipping image creation");
+        warn_report("This will become an error in future QEMU versions.");
+    }
+
     s.src_num = argc - optind - 1;
     out_filename = s.src_num >= 1 ? argv[argc - 1] : NULL;
 
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index fff07bb2a3..f7680c08e1 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -305,6 +305,13 @@  to just export the entire image and then mount only /dev/nbd0p1 than
 it is to reinvoke @command{qemu-nbd -c /dev/nbd0} limited to just a
 subset of the image.
 
+@subsection qemu-img convert -n -o (since 4.2.0)
+
+All options specified in @option{-o} are image creation options, so
+they have no effect when used with @option{-n} to skip image creation.
+Silently ignored options can be confusing, so this combination of
+options will be made an error in future versions.
+
 @section Build system
 
 @subsection Python 2 support (since 4.1.0)