All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation
@ 2020-12-09 20:33 Maxim Levitsky
  2020-12-09 20:33 ` [PATCH v5 1/4] crypto: luks: Fix tiny memory leak Maxim Levitsky
                   ` (3 more replies)
  0 siblings, 4 replies; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-09 20:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Maxim Levitsky, Alberto Garcia, qemu-block, Max Reitz

Use the bdrv_co_delete_file interface to delete the underlying
file if qcow2 initialization fails (e.g due to bad encryption secret)

This makes the qcow2 driver behave the same way as the luks driver behaves.

Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1845353

V3: addressed review feedback and reworked commit messages

V4: got rid of code duplication by adding bdrv_co_delete_file_noerr
and made the qcow2 driver use this function to delete
both the main and the data file.

V5: addresssed review feedback on reworked version.

Best regards,
	Maxim Levitsky

Maxim Levitsky (4):
  crypto: luks: Fix tiny memory leak
  block: add bdrv_co_delete_file_noerr
  crypto: luks: use bdrv_co_delete_file_noerr
  block: qcow2: remove the created file on initialization error

 block.c               | 24 ++++++++++++++++++++++++
 block/crypto.c        | 13 ++-----------
 block/qcow2.c         |  6 ++++--
 include/block/block.h |  1 +
 4 files changed, 31 insertions(+), 13 deletions(-)

-- 
2.26.2




^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v5 1/4] crypto: luks: Fix tiny memory leak
  2020-12-09 20:33 [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation Maxim Levitsky
@ 2020-12-09 20:33 ` Maxim Levitsky
  2020-12-10 10:28   ` Vladimir Sementsov-Ogievskiy
  2020-12-09 20:33 ` [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr Maxim Levitsky
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-09 20:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Maxim Levitsky, Alberto Garcia, qemu-block, Max Reitz

When the underlying block device doesn't support the
bdrv_co_delete_file interface, an 'Error' object was leaked.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
 block/crypto.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/block/crypto.c b/block/crypto.c
index aef5a5721a..b3a5275132 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -735,6 +735,8 @@ fail:
          */
         if ((r_del < 0) && (r_del != -ENOTSUP)) {
             error_report_err(local_delete_err);
+        } else {
+            error_free(local_delete_err);
         }
     }
 
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr
  2020-12-09 20:33 [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation Maxim Levitsky
  2020-12-09 20:33 ` [PATCH v5 1/4] crypto: luks: Fix tiny memory leak Maxim Levitsky
@ 2020-12-09 20:33 ` Maxim Levitsky
  2020-12-10 10:54   ` Vladimir Sementsov-Ogievskiy
  2020-12-09 20:33 ` [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr Maxim Levitsky
  2020-12-09 20:33 ` [PATCH v5 4/4] block: qcow2: remove the created file on initialization error Maxim Levitsky
  3 siblings, 1 reply; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-09 20:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Maxim Levitsky, Alberto Garcia, qemu-block, Max Reitz

This function wraps bdrv_co_delete_file for the common case of removing a file,
which was just created by format driver, on an error condition.

It hides the -ENOTSUPP error, and reports all other errors otherwise.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
 block.c               | 24 ++++++++++++++++++++++++
 include/block/block.h |  1 +
 2 files changed, 25 insertions(+)

diff --git a/block.c b/block.c
index f1cedac362..5d35ba2fb8 100644
--- a/block.c
+++ b/block.c
@@ -704,6 +704,30 @@ int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp)
     return ret;
 }
 
+void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs)
+{
+    Error *local_err = NULL;
+    int ret;
+
+    if (!bs) {
+        return;
+    }
+
+    ret = bdrv_co_delete_file(bs, &local_err);
+    /*
+     * ENOTSUP will happen if the block driver doesn't support
+     * the 'bdrv_co_delete_file' interface. This is a predictable
+     * scenario and shouldn't be reported back to the user.
+     */
+    if (ret == -ENOTSUP) {
+        error_free(local_err);
+    } else if (ret < 0) {
+        error_report_err(local_err);
+    }
+}
+
+
+
 /**
  * Try to get @bs's logical and physical block size.
  * On success, store them in @bsz struct and return 0.
diff --git a/include/block/block.h b/include/block/block.h
index c9d7c58765..af03022723 100644
--- a/include/block/block.h
+++ b/include/block/block.h
@@ -428,6 +428,7 @@ int bdrv_freeze_backing_chain(BlockDriverState *bs, BlockDriverState *base,
                               Error **errp);
 void bdrv_unfreeze_backing_chain(BlockDriverState *bs, BlockDriverState *base);
 int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp);
+void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs);
 
 
 typedef struct BdrvCheckResult {
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr
  2020-12-09 20:33 [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation Maxim Levitsky
  2020-12-09 20:33 ` [PATCH v5 1/4] crypto: luks: Fix tiny memory leak Maxim Levitsky
  2020-12-09 20:33 ` [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr Maxim Levitsky
@ 2020-12-09 20:33 ` Maxim Levitsky
  2020-12-10 10:55   ` Vladimir Sementsov-Ogievskiy
  2020-12-09 20:33 ` [PATCH v5 4/4] block: qcow2: remove the created file on initialization error Maxim Levitsky
  3 siblings, 1 reply; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-09 20:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Maxim Levitsky, Alberto Garcia, qemu-block, Max Reitz

This refactoring is now possible thanks to this function.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
 block/crypto.c | 15 ++-------------
 1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/block/crypto.c b/block/crypto.c
index b3a5275132..1d30fde38e 100644
--- a/block/crypto.c
+++ b/block/crypto.c
@@ -725,19 +725,8 @@ fail:
      * If an error occurred, delete 'filename'. Even if the file existed
      * beforehand, it has been truncated and corrupted in the process.
      */
-    if (ret && bs) {
-        Error *local_delete_err = NULL;
-        int r_del = bdrv_co_delete_file(bs, &local_delete_err);
-        /*
-         * ENOTSUP will happen if the block driver doesn't support
-         * the 'bdrv_co_delete_file' interface. This is a predictable
-         * scenario and shouldn't be reported back to the user.
-         */
-        if ((r_del < 0) && (r_del != -ENOTSUP)) {
-            error_report_err(local_delete_err);
-        } else {
-            error_free(local_delete_err);
-        }
+    if (ret) {
+        bdrv_co_delete_file_noerr(bs);
     }
 
     bdrv_unref(bs);
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v5 4/4] block: qcow2: remove the created file on initialization error
  2020-12-09 20:33 [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation Maxim Levitsky
                   ` (2 preceding siblings ...)
  2020-12-09 20:33 ` [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr Maxim Levitsky
@ 2020-12-09 20:33 ` Maxim Levitsky
  2020-12-10 11:00   ` Vladimir Sementsov-Ogievskiy
  3 siblings, 1 reply; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-09 20:33 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Maxim Levitsky, Alberto Garcia, qemu-block, Max Reitz

If the qcow initialization fails, we should remove the file if it was
already created, to avoid leaving stale files around.

We already do this for luks raw images.

Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
Reviewed-by: Alberto Garcia <berto@igalia.com>
---
 block/qcow2.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/block/qcow2.c b/block/qcow2.c
index 3a90ef2786..68c9182f92 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -3847,12 +3847,14 @@ static int coroutine_fn qcow2_co_create_opts(BlockDriver *drv,
 
     /* Create the qcow2 image (format layer) */
     ret = qcow2_co_create(create_options, errp);
+finish:
     if (ret < 0) {
-        goto finish;
+        bdrv_co_delete_file_noerr(bs);
+        bdrv_co_delete_file_noerr(data_bs);
     }
 
     ret = 0;
-finish:
+
     qobject_unref(qdict);
     bdrv_unref(bs);
     bdrv_unref(data_bs);
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 1/4] crypto: luks: Fix tiny memory leak
  2020-12-09 20:33 ` [PATCH v5 1/4] crypto: luks: Fix tiny memory leak Maxim Levitsky
@ 2020-12-10 10:28   ` Vladimir Sementsov-Ogievskiy
  0 siblings, 0 replies; 11+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2020-12-10 10:28 UTC (permalink / raw)
  To: Maxim Levitsky, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

09.12.2020 23:33, Maxim Levitsky wrote:
> When the underlying block device doesn't support the
> bdrv_co_delete_file interface, an 'Error' object was leaked.
> 
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> Reviewed-by: Alberto Garcia <berto@igalia.com>

Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

> ---
>   block/crypto.c | 2 ++
>   1 file changed, 2 insertions(+)
> 
> diff --git a/block/crypto.c b/block/crypto.c
> index aef5a5721a..b3a5275132 100644
> --- a/block/crypto.c
> +++ b/block/crypto.c
> @@ -735,6 +735,8 @@ fail:
>            */
>           if ((r_del < 0) && (r_del != -ENOTSUP)) {
>               error_report_err(local_delete_err);
> +        } else {
> +            error_free(local_delete_err);
>           }
>       }
>   
> 


-- 
Best regards,
Vladimir


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr
  2020-12-09 20:33 ` [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr Maxim Levitsky
@ 2020-12-10 10:54   ` Vladimir Sementsov-Ogievskiy
  2020-12-10 11:47     ` Maxim Levitsky
  0 siblings, 1 reply; 11+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2020-12-10 10:54 UTC (permalink / raw)
  To: Maxim Levitsky, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

09.12.2020 23:33, Maxim Levitsky wrote:
> This function wraps bdrv_co_delete_file for the common case of removing a file,
> which was just created by format driver, on an error condition.
> 
> It hides the -ENOTSUPP error, and reports all other errors otherwise.

I've looked at original commit added this logic, and didn't find exactly, why should we hide it..

> 
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> Reviewed-by: Alberto Garcia <berto@igalia.com>
> ---
>   block.c               | 24 ++++++++++++++++++++++++
>   include/block/block.h |  1 +
>   2 files changed, 25 insertions(+)
> 
> diff --git a/block.c b/block.c
> index f1cedac362..5d35ba2fb8 100644
> --- a/block.c
> +++ b/block.c
> @@ -704,6 +704,30 @@ int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp)
>       return ret;
>   }
>   
> +void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs)
> +{
> +    Error *local_err = NULL;
> +    int ret;
> +
> +    if (!bs) {
> +        return;
> +    }
> +
> +    ret = bdrv_co_delete_file(bs, &local_err);
> +    /*
> +     * ENOTSUP will happen if the block driver doesn't support
> +     * the 'bdrv_co_delete_file' interface. This is a predictable
> +     * scenario and shouldn't be reported back to the user.
> +     */

It's not predictable for user: user doesn't know internal processes and interfaces.

The problem: we've left extra file on failure scenario and can't remove it. We want to warn the user that there is a wrong file left. Why not to warn, when the removement is unsupported internally by the driver?

I think, it's better to report it in any case.

Another reason: less code and logic on failure case. Optimizing failure scenarios in different manner is seldom a good thing to do.

And finally: why to report the error at all? If we have errp parameter, it's better to add the info to it using error_append.. something like error_append(errp, " (also failed to remove unfinished file %s: %s)", file_name, error_get_pretty(local_err))


Probably I'm making mountains out of molehills. It should work, so take my r-b anyway:

Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>


Side note: I'd not split patches 02 and 03: this way it would be simpler to see the code movement.

> +    if (ret == -ENOTSUP) {
> +        error_free(local_err);
> +    } else if (ret < 0) {
> +        error_report_err(local_err);
> +    }
> +}
> +
> +
> +

three empty lines..

>   /**
>    * Try to get @bs's logical and physical block size.
>    * On success, store them in @bsz struct and return 0.
> diff --git a/include/block/block.h b/include/block/block.h
> index c9d7c58765..af03022723 100644
> --- a/include/block/block.h
> +++ b/include/block/block.h
> @@ -428,6 +428,7 @@ int bdrv_freeze_backing_chain(BlockDriverState *bs, BlockDriverState *base,
>                                 Error **errp);
>   void bdrv_unfreeze_backing_chain(BlockDriverState *bs, BlockDriverState *base);
>   int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp);
> +void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs);
>   
>   
>   typedef struct BdrvCheckResult {
> 


-- 
Best regards,
Vladimir


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr
  2020-12-09 20:33 ` [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr Maxim Levitsky
@ 2020-12-10 10:55   ` Vladimir Sementsov-Ogievskiy
  0 siblings, 0 replies; 11+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2020-12-10 10:55 UTC (permalink / raw)
  To: Maxim Levitsky, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

09.12.2020 23:33, Maxim Levitsky wrote:
> This refactoring is now possible thanks to this function.
> 
> Signed-off-by: Maxim Levitsky<mlevitsk@redhat.com>
> Reviewed-by: Alberto Garcia<berto@igalia.com>

Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>

-- 
Best regards,
Vladimir


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 4/4] block: qcow2: remove the created file on initialization error
  2020-12-09 20:33 ` [PATCH v5 4/4] block: qcow2: remove the created file on initialization error Maxim Levitsky
@ 2020-12-10 11:00   ` Vladimir Sementsov-Ogievskiy
  2020-12-10 11:02     ` Maxim Levitsky
  0 siblings, 1 reply; 11+ messages in thread
From: Vladimir Sementsov-Ogievskiy @ 2020-12-10 11:00 UTC (permalink / raw)
  To: Maxim Levitsky, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

09.12.2020 23:33, Maxim Levitsky wrote:
> If the qcow initialization fails, we should remove the file if it was
> already created, to avoid leaving stale files around.
> 
> We already do this for luks raw images.
> 
> Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> Reviewed-by: Alberto Garcia <berto@igalia.com>
> ---
>   block/qcow2.c | 6 ++++--
>   1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/block/qcow2.c b/block/qcow2.c
> index 3a90ef2786..68c9182f92 100644
> --- a/block/qcow2.c
> +++ b/block/qcow2.c
> @@ -3847,12 +3847,14 @@ static int coroutine_fn qcow2_co_create_opts(BlockDriver *drv,
>   
>       /* Create the qcow2 image (format layer) */
>       ret = qcow2_co_create(create_options, errp);
> +finish:
>       if (ret < 0) {
> -        goto finish;
> +        bdrv_co_delete_file_noerr(bs);
> +        bdrv_co_delete_file_noerr(data_bs);
>       }
>   
>       ret = 0;

Ooops :) After this patch the function always returns zero :)

> -finish:
> +
>       qobject_unref(qdict);
>       bdrv_unref(bs);
>       bdrv_unref(data_bs);
> 


-- 
Best regards,
Vladimir


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 4/4] block: qcow2: remove the created file on initialization error
  2020-12-10 11:00   ` Vladimir Sementsov-Ogievskiy
@ 2020-12-10 11:02     ` Maxim Levitsky
  0 siblings, 0 replies; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-10 11:02 UTC (permalink / raw)
  To: Vladimir Sementsov-Ogievskiy, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

On Thu, 2020-12-10 at 14:00 +0300, Vladimir Sementsov-Ogievskiy wrote:
> 09.12.2020 23:33, Maxim Levitsky wrote:
> > If the qcow initialization fails, we should remove the file if it was
> > already created, to avoid leaving stale files around.
> > 
> > We already do this for luks raw images.
> > 
> > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> > Reviewed-by: Alberto Garcia <berto@igalia.com>
> > ---
> >   block/qcow2.c | 6 ++++--
> >   1 file changed, 4 insertions(+), 2 deletions(-)
> > 
> > diff --git a/block/qcow2.c b/block/qcow2.c
> > index 3a90ef2786..68c9182f92 100644
> > --- a/block/qcow2.c
> > +++ b/block/qcow2.c
> > @@ -3847,12 +3847,14 @@ static int coroutine_fn qcow2_co_create_opts(BlockDriver *drv,
> >   
> >       /* Create the qcow2 image (format layer) */
> >       ret = qcow2_co_create(create_options, errp);
> > +finish:
> >       if (ret < 0) {
> > -        goto finish;
> > +        bdrv_co_delete_file_noerr(bs);
> > +        bdrv_co_delete_file_noerr(data_bs);
> >       }
> >   
> >       ret = 0;
> 
> Ooops :) After this patch the function always returns zero :)

Indeed :-(

These small changes done in the last minute are the most dangerous.

Best regards,
	Maxim Levitsky
> 
> > -finish:
> > +
> >       qobject_unref(qdict);
> >       bdrv_unref(bs);
> >       bdrv_unref(data_bs);
> > 
> 
> 




^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr
  2020-12-10 10:54   ` Vladimir Sementsov-Ogievskiy
@ 2020-12-10 11:47     ` Maxim Levitsky
  0 siblings, 0 replies; 11+ messages in thread
From: Maxim Levitsky @ 2020-12-10 11:47 UTC (permalink / raw)
  To: Vladimir Sementsov-Ogievskiy, qemu-devel
  Cc: Kevin Wolf, Alberto Garcia, qemu-block, Max Reitz

On Thu, 2020-12-10 at 13:54 +0300, Vladimir Sementsov-Ogievskiy wrote:
> 09.12.2020 23:33, Maxim Levitsky wrote:
> > This function wraps bdrv_co_delete_file for the common case of removing a file,
> > which was just created by format driver, on an error condition.
> > 
> > It hides the -ENOTSUPP error, and reports all other errors otherwise.
> 
> I've looked at original commit added this logic, and didn't find exactly, why should we hide it..
> 
> > Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com>
> > Reviewed-by: Alberto Garcia <berto@igalia.com>
> > ---
> >   block.c               | 24 ++++++++++++++++++++++++
> >   include/block/block.h |  1 +
> >   2 files changed, 25 insertions(+)
> > 
> > diff --git a/block.c b/block.c
> > index f1cedac362..5d35ba2fb8 100644
> > --- a/block.c
> > +++ b/block.c
> > @@ -704,6 +704,30 @@ int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp)
> >       return ret;
> >   }
> >   
> > +void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs)
> > +{
> > +    Error *local_err = NULL;
> > +    int ret;
> > +
> > +    if (!bs) {
> > +        return;
> > +    }
> > +
> > +    ret = bdrv_co_delete_file(bs, &local_err);
> > +    /*
> > +     * ENOTSUP will happen if the block driver doesn't support
> > +     * the 'bdrv_co_delete_file' interface. This is a predictable
> > +     * scenario and shouldn't be reported back to the user.
> > +     */
> 
> It's not predictable for user: user doesn't know internal processes and interfaces.
> 
> The problem: we've left extra file on failure scenario and can't remove it. We want to warn the user that there is a wrong file left. Why not to warn, when the removement is unsupported internally by the driver?
> 
> I think, it's better to report it in any case.

This is a good point, but it is not something I changed.
I prefer this to be changed in a separate patch.


> 
> Another reason: less code and logic on failure case. Optimizing failure scenarios in different manner is seldom a good thing to do.
> 
> And finally: why to report the error at all? If we have errp parameter, it's better to add the info to it using error_append.. something like error_append(errp, " (also failed to remove unfinished file %s: %s)", file_name, error_get_pretty(local_err))

The idea behind this was to reduce code duplication in the callers of this function,
and this is why this function doesn't even have the 'errp' parameter.
I'll think about it.

> 
> 
> Probably I'm making mountains out of molehills. It should work, so take my r-b anyway:
> 
> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
> 
> 
> Side note: I'd not split patches 02 and 03: this way it would be simpler to see the code movement.
> 
> > +    if (ret == -ENOTSUP) {
> > +        error_free(local_err);
> > +    } else if (ret < 0) {
> > +        error_report_err(local_err);
> > +    }
> > +}
> > +
> > +
> > +
> 
> three empty lines..

Will fix.
> 
> >   /**
> >    * Try to get @bs's logical and physical block size.
> >    * On success, store them in @bsz struct and return 0.
> > diff --git a/include/block/block.h b/include/block/block.h
> > index c9d7c58765..af03022723 100644
> > --- a/include/block/block.h
> > +++ b/include/block/block.h
> > @@ -428,6 +428,7 @@ int bdrv_freeze_backing_chain(BlockDriverState *bs, BlockDriverState *base,
> >                                 Error **errp);
> >   void bdrv_unfreeze_backing_chain(BlockDriverState *bs, BlockDriverState *base);
> >   int coroutine_fn bdrv_co_delete_file(BlockDriverState *bs, Error **errp);
> > +void coroutine_fn bdrv_co_delete_file_noerr(BlockDriverState *bs);
> >   
> >   
> >   typedef struct BdrvCheckResult {
> > 

Thanks a lot for the review!

Best regards,
	Maxim Levitsky

> 
> 




^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-12-10 11:49 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-09 20:33 [PATCH v5 0/4] qcow2: don't leave partially initialized file on image creation Maxim Levitsky
2020-12-09 20:33 ` [PATCH v5 1/4] crypto: luks: Fix tiny memory leak Maxim Levitsky
2020-12-10 10:28   ` Vladimir Sementsov-Ogievskiy
2020-12-09 20:33 ` [PATCH v5 2/4] block: add bdrv_co_delete_file_noerr Maxim Levitsky
2020-12-10 10:54   ` Vladimir Sementsov-Ogievskiy
2020-12-10 11:47     ` Maxim Levitsky
2020-12-09 20:33 ` [PATCH v5 3/4] crypto: luks: use bdrv_co_delete_file_noerr Maxim Levitsky
2020-12-10 10:55   ` Vladimir Sementsov-Ogievskiy
2020-12-09 20:33 ` [PATCH v5 4/4] block: qcow2: remove the created file on initialization error Maxim Levitsky
2020-12-10 11:00   ` Vladimir Sementsov-Ogievskiy
2020-12-10 11:02     ` Maxim Levitsky

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.