[Qemu-devel] [PATCH] migration: Report when bdrv_inactivate_all fails

Dr. David Alan Gilbert (git) posted 1 patch 6 years, 8 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170822170212.27347-1-dgilbert@redhat.com
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
migration/savevm.c | 2 ++
1 file changed, 2 insertions(+)
[Qemu-devel] [PATCH] migration: Report when bdrv_inactivate_all fails
Posted by Dr. David Alan Gilbert (git) 6 years, 8 months ago
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

If the bdrv_inactivate_all fails near the end of the migration,
the migration will fail and often the only diagnostics in the log
are an I/O error which you can't distinguish from an error on
the socket connection.

Add an error so we know when it's actually a block problem.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 migration/savevm.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/migration/savevm.c b/migration/savevm.c
index fdd15fa0a7..7a55023d1a 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1157,6 +1157,8 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
          * bdrv_invalidate_cache_all() on the other end won't fail. */
         ret = bdrv_inactivate_all();
         if (ret) {
+            error_report("%s: bdrv_inactivate_all() failed (%d)",
+                         __func__, ret);
             qemu_file_set_error(f, ret);
             return ret;
         }
-- 
2.13.5


Re: [Qemu-devel] [PATCH] migration: Report when bdrv_inactivate_all fails
Posted by Peter Xu 6 years, 8 months ago
On Tue, Aug 22, 2017 at 06:02:12PM +0100, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> If the bdrv_inactivate_all fails near the end of the migration,
> the migration will fail and often the only diagnostics in the log
> are an I/O error which you can't distinguish from an error on
> the socket connection.
> 
> Add an error so we know when it's actually a block problem.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

IMHO it would be nice if bdrv_inactivate_all() can print some error
message as soon as when the error occurs, then we can know more
details (or allow caller to pass in an Error *).  But at least adding
one more error message never hurts, so:

Reviewed-by: Peter Xu <peterx@redhat.com>

> ---
>  migration/savevm.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/migration/savevm.c b/migration/savevm.c
> index fdd15fa0a7..7a55023d1a 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -1157,6 +1157,8 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
>           * bdrv_invalidate_cache_all() on the other end won't fail. */
>          ret = bdrv_inactivate_all();
>          if (ret) {
> +            error_report("%s: bdrv_inactivate_all() failed (%d)",
> +                         __func__, ret);
>              qemu_file_set_error(f, ret);
>              return ret;
>          }
> -- 
> 2.13.5
> 

-- 
Peter Xu

Re: [Qemu-devel] [PATCH] migration: Report when bdrv_inactivate_all fails
Posted by Stefan Hajnoczi 6 years, 8 months ago
On Tue, Aug 22, 2017 at 06:02:12PM +0100, Dr. David Alan Gilbert (git) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> If the bdrv_inactivate_all fails near the end of the migration,
> the migration will fail and often the only diagnostics in the log
> are an I/O error which you can't distinguish from an error on
> the socket connection.
> 
> Add an error so we know when it's actually a block problem.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> ---
>  migration/savevm.c | 2 ++
>  1 file changed, 2 insertions(+)

Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>

Re: [Qemu-devel] [PATCH] migration: Report when bdrv_inactivate_all fails
Posted by Dr. David Alan Gilbert 6 years, 8 months ago
* Dr. David Alan Gilbert (git) (dgilbert@redhat.com) wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> 
> If the bdrv_inactivate_all fails near the end of the migration,
> the migration will fail and often the only diagnostics in the log
> are an I/O error which you can't distinguish from an error on
> the socket connection.
> 
> Add an error so we know when it's actually a block problem.
> 
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

Queued for migration.

> ---
>  migration/savevm.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/migration/savevm.c b/migration/savevm.c
> index fdd15fa0a7..7a55023d1a 100644
> --- a/migration/savevm.c
> +++ b/migration/savevm.c
> @@ -1157,6 +1157,8 @@ int qemu_savevm_state_complete_precopy(QEMUFile *f, bool iterable_only,
>           * bdrv_invalidate_cache_all() on the other end won't fail. */
>          ret = bdrv_inactivate_all();
>          if (ret) {
> +            error_report("%s: bdrv_inactivate_all() failed (%d)",
> +                         __func__, ret);
>              qemu_file_set_error(f, ret);
>              return ret;
>          }
> -- 
> 2.13.5
> 
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK