Re: [PATCH for-5.1] qemu-img resize: Require --shrink for shrinking all image formats

2020-07-14 Thread Kevin Wolf
Am 10.07.2020 um 14:41 hat Kevin Wolf geschrieben:
> Am 10.07.2020 um 14:33 hat Peter Maydell geschrieben:
> > On Fri, 10 Jul 2020 at 13:17, Kevin Wolf  wrote:
> > >
> > > QEMU 2.11 introduced the --shrink option for qemu-img resize to avoid
> > > accidentally shrinking images (commit 4ffca8904a3). However, for
> > > compatibility reasons, it was not enforced for raw images yet, but only
> > > a deprecation warning was printed. This warning has existed for long
> > > enough that we can now finally require --shrink for raw images, too, and
> > > error out if it's not given.
> > >
> > > Documentation already describes the state as it is after this patch.
> > >
> > > Signed-off-by: Kevin Wolf 
> > > ---
> > >  qemu-img.c | 17 +++--
> > >  1 file changed, 3 insertions(+), 14 deletions(-)
> > >
> > > diff --git a/qemu-img.c b/qemu-img.c
> > > index e3b2ec3e78..f6a2703039 100644
> > > --- a/qemu-img.c
> > > +++ b/qemu-img.c
> > > @@ -4011,20 +4011,9 @@ static int img_resize(int argc, char **argv)
> > >  }
> > >
> > >  if (total_size < current_size && !shrink) {
> > > -warn_report("Shrinking an image will delete all data beyond the "
> > > -"shrunken image's end. Before performing such an "
> > > -"operation, make sure there is no important data 
> > > there.");
> > > -
> > > -if (g_strcmp0(bdrv_get_format_name(blk_bs(blk)), "raw") != 0) {
> > > -error_report(
> > > -  "Use the --shrink option to perform a shrink operation.");
> > > -ret = -1;
> > > -goto out;
> > > -} else {
> > > -warn_report("Using the --shrink option will suppress this 
> > > message. "
> > > -"Note that future versions of qemu-img may 
> > > refuse to "
> > > -"shrink images without this option.");
> > > -}
> > > +error_report("Use the --shrink option to perform a shrink 
> > > operation.");
> > 
> > I think it would be nice to retain this bit of text:
> > 
> > > -warn_report("Shrinking an image will delete all data beyond the "
> > > -"shrunken image's end. Before performing such an "
> > > -"operation, make sure there is no important data 
> > > there.");
> > 
> > ie, make the raw-shrink case be the same as the non-raw-shrink
> > case currently does.
> 
> I had this at first, but then the whole thing looked like a warning and
> I wasn't sure that it would still be understood as an error. (Which is
> of course a preexisting problem for non-raw.)
> 
> Maybe it becomes clearer if I just swap the order and print the error
> first and only then the warning?

I made this change and applied the patch to the block branch.

Kevin




Re: [PATCH for-5.1] qemu-img resize: Require --shrink for shrinking all image formats

2020-07-10 Thread Kevin Wolf
Am 10.07.2020 um 14:33 hat Peter Maydell geschrieben:
> On Fri, 10 Jul 2020 at 13:17, Kevin Wolf  wrote:
> >
> > QEMU 2.11 introduced the --shrink option for qemu-img resize to avoid
> > accidentally shrinking images (commit 4ffca8904a3). However, for
> > compatibility reasons, it was not enforced for raw images yet, but only
> > a deprecation warning was printed. This warning has existed for long
> > enough that we can now finally require --shrink for raw images, too, and
> > error out if it's not given.
> >
> > Documentation already describes the state as it is after this patch.
> >
> > Signed-off-by: Kevin Wolf 
> > ---
> >  qemu-img.c | 17 +++--
> >  1 file changed, 3 insertions(+), 14 deletions(-)
> >
> > diff --git a/qemu-img.c b/qemu-img.c
> > index e3b2ec3e78..f6a2703039 100644
> > --- a/qemu-img.c
> > +++ b/qemu-img.c
> > @@ -4011,20 +4011,9 @@ static int img_resize(int argc, char **argv)
> >  }
> >
> >  if (total_size < current_size && !shrink) {
> > -warn_report("Shrinking an image will delete all data beyond the "
> > -"shrunken image's end. Before performing such an "
> > -"operation, make sure there is no important data 
> > there.");
> > -
> > -if (g_strcmp0(bdrv_get_format_name(blk_bs(blk)), "raw") != 0) {
> > -error_report(
> > -  "Use the --shrink option to perform a shrink operation.");
> > -ret = -1;
> > -goto out;
> > -} else {
> > -warn_report("Using the --shrink option will suppress this 
> > message. "
> > -"Note that future versions of qemu-img may refuse 
> > to "
> > -"shrink images without this option.");
> > -}
> > +error_report("Use the --shrink option to perform a shrink 
> > operation.");
> 
> I think it would be nice to retain this bit of text:
> 
> > -warn_report("Shrinking an image will delete all data beyond the "
> > -"shrunken image's end. Before performing such an "
> > -"operation, make sure there is no important data 
> > there.");
> 
> ie, make the raw-shrink case be the same as the non-raw-shrink
> case currently does.

I had this at first, but then the whole thing looked like a warning and
I wasn't sure that it would still be understood as an error. (Which is
of course a preexisting problem for non-raw.)

Maybe it becomes clearer if I just swap the order and print the error
first and only then the warning?

Kevin




Re: [PATCH for-5.1] qemu-img resize: Require --shrink for shrinking all image formats

2020-07-10 Thread Peter Maydell
On Fri, 10 Jul 2020 at 13:17, Kevin Wolf  wrote:
>
> QEMU 2.11 introduced the --shrink option for qemu-img resize to avoid
> accidentally shrinking images (commit 4ffca8904a3). However, for
> compatibility reasons, it was not enforced for raw images yet, but only
> a deprecation warning was printed. This warning has existed for long
> enough that we can now finally require --shrink for raw images, too, and
> error out if it's not given.
>
> Documentation already describes the state as it is after this patch.
>
> Signed-off-by: Kevin Wolf 
> ---
>  qemu-img.c | 17 +++--
>  1 file changed, 3 insertions(+), 14 deletions(-)
>
> diff --git a/qemu-img.c b/qemu-img.c
> index e3b2ec3e78..f6a2703039 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -4011,20 +4011,9 @@ static int img_resize(int argc, char **argv)
>  }
>
>  if (total_size < current_size && !shrink) {
> -warn_report("Shrinking an image will delete all data beyond the "
> -"shrunken image's end. Before performing such an "
> -"operation, make sure there is no important data 
> there.");
> -
> -if (g_strcmp0(bdrv_get_format_name(blk_bs(blk)), "raw") != 0) {
> -error_report(
> -  "Use the --shrink option to perform a shrink operation.");
> -ret = -1;
> -goto out;
> -} else {
> -warn_report("Using the --shrink option will suppress this 
> message. "
> -"Note that future versions of qemu-img may refuse to 
> "
> -"shrink images without this option.");
> -}
> +error_report("Use the --shrink option to perform a shrink 
> operation.");

I think it would be nice to retain this bit of text:

> -warn_report("Shrinking an image will delete all data beyond the "
> -"shrunken image's end. Before performing such an "
> -"operation, make sure there is no important data 
> there.");

ie, make the raw-shrink case be the same as the non-raw-shrink
case currently does.

thanks
-- PMM



Re: [PATCH for-5.1] qemu-img resize: Require --shrink for shrinking all image formats

2020-07-10 Thread Daniel P . Berrangé
On Fri, Jul 10, 2020 at 02:17:17PM +0200, Kevin Wolf wrote:
> QEMU 2.11 introduced the --shrink option for qemu-img resize to avoid
> accidentally shrinking images (commit 4ffca8904a3). However, for
> compatibility reasons, it was not enforced for raw images yet, but only
> a deprecation warning was printed. This warning has existed for long
> enough that we can now finally require --shrink for raw images, too, and
> error out if it's not given.

Libvirt has used the --shrink flag since Aug 2018, so this is safe
from our POV.

> Documentation already describes the state as it is after this patch.
> 
> Signed-off-by: Kevin Wolf 
> ---
>  qemu-img.c | 17 +++--
>  1 file changed, 3 insertions(+), 14 deletions(-)

Reviewed-by: Daniel P. Berrangé 


Regards,
Daniel
-- 
|: https://berrange.com  -o-https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o-https://fstop138.berrange.com :|
|: https://entangle-photo.org-o-https://www.instagram.com/dberrange :|




[PATCH for-5.1] qemu-img resize: Require --shrink for shrinking all image formats

2020-07-10 Thread Kevin Wolf
QEMU 2.11 introduced the --shrink option for qemu-img resize to avoid
accidentally shrinking images (commit 4ffca8904a3). However, for
compatibility reasons, it was not enforced for raw images yet, but only
a deprecation warning was printed. This warning has existed for long
enough that we can now finally require --shrink for raw images, too, and
error out if it's not given.

Documentation already describes the state as it is after this patch.

Signed-off-by: Kevin Wolf 
---
 qemu-img.c | 17 +++--
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index e3b2ec3e78..f6a2703039 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -4011,20 +4011,9 @@ static int img_resize(int argc, char **argv)
 }
 
 if (total_size < current_size && !shrink) {
-warn_report("Shrinking an image will delete all data beyond the "
-"shrunken image's end. Before performing such an "
-"operation, make sure there is no important data there.");
-
-if (g_strcmp0(bdrv_get_format_name(blk_bs(blk)), "raw") != 0) {
-error_report(
-  "Use the --shrink option to perform a shrink operation.");
-ret = -1;
-goto out;
-} else {
-warn_report("Using the --shrink option will suppress this message. 
"
-"Note that future versions of qemu-img may refuse to "
-"shrink images without this option.");
-}
+error_report("Use the --shrink option to perform a shrink operation.");
+ret = -1;
+goto out;
 }
 
 /*
-- 
2.25.4