qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure
@ 2021-04-15 13:58 Daniel P. Berrangé
  2021-04-15 13:58 ` [PATCH 1/5] migration: add trace point when vm_stop_force_state fails Daniel P. Berrangé
                   ` (5 more replies)
  0 siblings, 6 replies; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

I spent a while debugging a tricky migration failure today which was
ultimately caused by fdatasync() getting EACCESS. The existing probes
were not sufficient to diagnose this, so I had to resort to GDB. This
improves probes and block error reporting to make future diagnosis
possible without GDB.

Daniel P. Berrangé (5):
  migration: add trace point when vm_stop_force_state fails
  softmmu: add trace point when bdrv_flush_all fails
  block: preserve errno from fdatasync failures
  block: add trace point when fdatasync fails
  block: remove duplicate trace.h include

 block/file-posix.c     | 10 +++++-----
 block/trace-events     |  1 +
 migration/migration.c  |  1 +
 migration/trace-events |  1 +
 softmmu/cpus.c         |  7 ++++++-
 softmmu/trace-events   |  3 +++
 6 files changed, 17 insertions(+), 6 deletions(-)

-- 
2.30.2




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

* [PATCH 1/5] migration: add trace point when vm_stop_force_state fails
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
@ 2021-04-15 13:58 ` Daniel P. Berrangé
  2021-04-15 16:30   ` Dr. David Alan Gilbert
  2021-04-15 13:58 ` [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails Daniel P. Berrangé
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

This is a critical failure scenario for migration that is hard to
diagnose from existing probes. Most likely it is caused by an error
from bdrv_flush(), but we're not logging the errno anywhere, hence
this new probe.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 migration/migration.c  | 1 +
 migration/trace-events | 1 +
 2 files changed, 2 insertions(+)

diff --git a/migration/migration.c b/migration/migration.c
index 8ca034136b..bee0dcd501 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -3121,6 +3121,7 @@ static void migration_completion(MigrationState *s)
         if (!ret) {
             bool inactivate = !migrate_colo_enabled();
             ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
+            trace_migration_completion_vm_stop(ret);
             if (ret >= 0) {
                 ret = migration_maybe_pause(s, &current_active_state,
                                             MIGRATION_STATUS_DEVICE);
diff --git a/migration/trace-events b/migration/trace-events
index 668c562fed..8ec28432eb 100644
--- a/migration/trace-events
+++ b/migration/trace-events
@@ -149,6 +149,7 @@ migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t compat, uint
 migrate_send_rp_message(int msg_type, uint16_t len) "%d: len %d"
 migrate_send_rp_recv_bitmap(char *name, int64_t size) "block '%s' size 0x%"PRIi64
 migration_completion_file_err(void) ""
+migration_completion_vm_stop(int ret) "ret %d"
 migration_completion_postcopy_end(void) ""
 migration_completion_postcopy_end_after_complete(void) ""
 migration_rate_limit_pre(int ms) "%d ms"
-- 
2.30.2



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

* [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
  2021-04-15 13:58 ` [PATCH 1/5] migration: add trace point when vm_stop_force_state fails Daniel P. Berrangé
@ 2021-04-15 13:58 ` Daniel P. Berrangé
  2021-04-15 16:31   ` Dr. David Alan Gilbert
  2021-04-15 13:58 ` [PATCH 3/5] block: preserve errno from fdatasync failures Daniel P. Berrangé
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

The VM stop process has to flush outstanding I/O and this is a critical
failure scenario that is hard to diagnose. Add a probe point that
records the flush return code.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 softmmu/cpus.c       | 7 ++++++-
 softmmu/trace-events | 3 +++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/softmmu/cpus.c b/softmmu/cpus.c
index a7ee431187..c3caaeb26e 100644
--- a/softmmu/cpus.c
+++ b/softmmu/cpus.c
@@ -44,6 +44,7 @@
 #include "sysemu/whpx.h"
 #include "hw/boards.h"
 #include "hw/hw.h"
+#include "trace.h"
 
 #ifdef CONFIG_LINUX
 
@@ -266,6 +267,7 @@ static int do_vm_stop(RunState state, bool send_stop)
 
     bdrv_drain_all();
     ret = bdrv_flush_all();
+    trace_vm_stop_flush_all(ret);
 
     return ret;
 }
@@ -704,12 +706,15 @@ int vm_stop_force_state(RunState state)
     if (runstate_is_running()) {
         return vm_stop(state);
     } else {
+        int ret;
         runstate_set(state);
 
         bdrv_drain_all();
         /* Make sure to return an error if the flush in a previous vm_stop()
          * failed. */
-        return bdrv_flush_all();
+        ret = bdrv_flush_all();
+        trace_vm_stop_flush_all(ret);
+        return ret;
     }
 }
 
diff --git a/softmmu/trace-events b/softmmu/trace-events
index b80ca042e1..f11b427544 100644
--- a/softmmu/trace-events
+++ b/softmmu/trace-events
@@ -19,6 +19,9 @@ flatview_new(void *view, void *root) "%p (root %p)"
 flatview_destroy(void *view, void *root) "%p (root %p)"
 flatview_destroy_rcu(void *view, void *root) "%p (root %p)"
 
+# softmmu.c
+vm_stop_flush_all(int ret) "ret %d"
+
 # vl.c
 vm_state_notify(int running, int reason, const char *reason_str) "running %d reason %d (%s)"
 load_file(const char *name, const char *path) "name %s location %s"
-- 
2.30.2



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

* [PATCH 3/5] block: preserve errno from fdatasync failures
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
  2021-04-15 13:58 ` [PATCH 1/5] migration: add trace point when vm_stop_force_state fails Daniel P. Berrangé
  2021-04-15 13:58 ` [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails Daniel P. Berrangé
@ 2021-04-15 13:58 ` Daniel P. Berrangé
  2021-04-15 13:58 ` [PATCH 4/5] block: add trace point when fdatasync fails Daniel P. Berrangé
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

When fdatasync() fails on a file backend we set a flag that
short-circuits any future attempts to call fdatasync(). The
first failure returns the true errno, but the later short-
circuited calls return a generic EIO. The latter is unhelpful
because fdatasync() can return a variety of errnos, including
EACCESS.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 block/file-posix.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index 20e14f8e96..99cf452f84 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -160,7 +160,7 @@ typedef struct BDRVRawState {
     bool discard_zeroes:1;
     bool use_linux_aio:1;
     bool use_linux_io_uring:1;
-    bool page_cache_inconsistent:1;
+    int page_cache_inconsistent; /* errno from fdatasync failure */
     bool has_fallocate;
     bool needs_alignment;
     bool drop_cache;
@@ -1357,7 +1357,7 @@ static int handle_aiocb_flush(void *opaque)
     int ret;
 
     if (s->page_cache_inconsistent) {
-        return -EIO;
+        return -s->page_cache_inconsistent;
     }
 
     ret = qemu_fdatasync(aiocb->aio_fildes);
@@ -1376,7 +1376,7 @@ static int handle_aiocb_flush(void *opaque)
          * Obviously, this doesn't affect O_DIRECT, which bypasses the page
          * cache. */
         if ((s->open_flags & O_DIRECT) == 0) {
-            s->page_cache_inconsistent = true;
+            s->page_cache_inconsistent = errno;
         }
         return -errno;
     }
-- 
2.30.2



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

* [PATCH 4/5] block: add trace point when fdatasync fails
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
                   ` (2 preceding siblings ...)
  2021-04-15 13:58 ` [PATCH 3/5] block: preserve errno from fdatasync failures Daniel P. Berrangé
@ 2021-04-15 13:58 ` Daniel P. Berrangé
  2021-04-15 16:34   ` Dr. David Alan Gilbert
  2021-04-15 13:58 ` [PATCH 5/5] block: remove duplicate trace.h include Daniel P. Berrangé
  2021-04-15 19:33 ` [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Connor Kuehl
  5 siblings, 1 reply; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

A flush failure is a critical failure scenario for some operations.
For example, it will prevent migration from completing, as it will
make vm_stop() report an error. Thus it is important to have a
trace point present for debugging.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 block/file-posix.c | 2 ++
 block/trace-events | 1 +
 2 files changed, 3 insertions(+)

diff --git a/block/file-posix.c b/block/file-posix.c
index 99cf452f84..6aafeda44f 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -1362,6 +1362,8 @@ static int handle_aiocb_flush(void *opaque)
 
     ret = qemu_fdatasync(aiocb->aio_fildes);
     if (ret == -1) {
+        trace_file_flush_fdatasync_failed(errno);
+
         /* There is no clear definition of the semantics of a failing fsync(),
          * so we may have to assume the worst. The sad truth is that this
          * assumption is correct for Linux. Some pages are now probably marked
diff --git a/block/trace-events b/block/trace-events
index 1a12d634e2..c8a943e992 100644
--- a/block/trace-events
+++ b/block/trace-events
@@ -206,6 +206,7 @@ file_copy_file_range(void *bs, int src, int64_t src_off, int dst, int64_t dst_of
 file_FindEjectableOpticalMedia(const char *media) "Matching using %s"
 file_setup_cdrom(const char *partition) "Using %s as optical disc"
 file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d"
+file_flush_fdatasync_failed(int err) "errno %d"
 
 # sheepdog.c
 sheepdog_reconnect_to_sdog(void) "Wait for connection to be established"
-- 
2.30.2



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

* [PATCH 5/5] block: remove duplicate trace.h include
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
                   ` (3 preceding siblings ...)
  2021-04-15 13:58 ` [PATCH 4/5] block: add trace point when fdatasync fails Daniel P. Berrangé
@ 2021-04-15 13:58 ` Daniel P. Berrangé
  2021-04-15 16:37   ` Dr. David Alan Gilbert
  2021-04-15 19:33 ` [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Connor Kuehl
  5 siblings, 1 reply; 11+ messages in thread
From: Daniel P. Berrangé @ 2021-04-15 13:58 UTC (permalink / raw)
  To: qemu-devel
  Cc: Kevin Wolf, Daniel P. Berrangé,
	qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 block/file-posix.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/block/file-posix.c b/block/file-posix.c
index 6aafeda44f..2538e43299 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -106,8 +106,6 @@
 #include <xfs/xfs.h>
 #endif
 
-#include "trace.h"
-
 /* OS X does not have O_DSYNC */
 #ifndef O_DSYNC
 #ifdef O_SYNC
-- 
2.30.2



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

* Re: [PATCH 1/5] migration: add trace point when vm_stop_force_state fails
  2021-04-15 13:58 ` [PATCH 1/5] migration: add trace point when vm_stop_force_state fails Daniel P. Berrangé
@ 2021-04-15 16:30   ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 11+ messages in thread
From: Dr. David Alan Gilbert @ 2021-04-15 16:30 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Kevin Wolf, qemu-block, Juan Quintela, Richard Henderson,
	qemu-devel, Max Reitz, Paolo Bonzini

* Daniel P. Berrangé (berrange@redhat.com) wrote:
> This is a critical failure scenario for migration that is hard to
> diagnose from existing probes. Most likely it is caused by an error
> from bdrv_flush(), but we're not logging the errno anywhere, hence
> this new probe.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  migration/migration.c  | 1 +
>  migration/trace-events | 1 +
>  2 files changed, 2 insertions(+)
> 
> diff --git a/migration/migration.c b/migration/migration.c
> index 8ca034136b..bee0dcd501 100644
> --- a/migration/migration.c
> +++ b/migration/migration.c
> @@ -3121,6 +3121,7 @@ static void migration_completion(MigrationState *s)
>          if (!ret) {
>              bool inactivate = !migrate_colo_enabled();
>              ret = vm_stop_force_state(RUN_STATE_FINISH_MIGRATE);
> +            trace_migration_completion_vm_stop(ret);
>              if (ret >= 0) {
>                  ret = migration_maybe_pause(s, &current_active_state,
>                                              MIGRATION_STATUS_DEVICE);
> diff --git a/migration/trace-events b/migration/trace-events
> index 668c562fed..8ec28432eb 100644
> --- a/migration/trace-events
> +++ b/migration/trace-events
> @@ -149,6 +149,7 @@ migrate_pending(uint64_t size, uint64_t max, uint64_t pre, uint64_t compat, uint
>  migrate_send_rp_message(int msg_type, uint16_t len) "%d: len %d"
>  migrate_send_rp_recv_bitmap(char *name, int64_t size) "block '%s' size 0x%"PRIi64
>  migration_completion_file_err(void) ""
> +migration_completion_vm_stop(int ret) "ret %d"
>  migration_completion_postcopy_end(void) ""
>  migration_completion_postcopy_end_after_complete(void) ""
>  migration_rate_limit_pre(int ms) "%d ms"
> -- 
> 2.30.2
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



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

* Re: [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails
  2021-04-15 13:58 ` [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails Daniel P. Berrangé
@ 2021-04-15 16:31   ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 11+ messages in thread
From: Dr. David Alan Gilbert @ 2021-04-15 16:31 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Kevin Wolf, qemu-block, Juan Quintela, Richard Henderson,
	qemu-devel, Max Reitz, Paolo Bonzini

* Daniel P. Berrangé (berrange@redhat.com) wrote:
> The VM stop process has to flush outstanding I/O and this is a critical
> failure scenario that is hard to diagnose. Add a probe point that
> records the flush return code.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  softmmu/cpus.c       | 7 ++++++-
>  softmmu/trace-events | 3 +++
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/softmmu/cpus.c b/softmmu/cpus.c
> index a7ee431187..c3caaeb26e 100644
> --- a/softmmu/cpus.c
> +++ b/softmmu/cpus.c
> @@ -44,6 +44,7 @@
>  #include "sysemu/whpx.h"
>  #include "hw/boards.h"
>  #include "hw/hw.h"
> +#include "trace.h"
>  
>  #ifdef CONFIG_LINUX
>  
> @@ -266,6 +267,7 @@ static int do_vm_stop(RunState state, bool send_stop)
>  
>      bdrv_drain_all();
>      ret = bdrv_flush_all();
> +    trace_vm_stop_flush_all(ret);
>  
>      return ret;
>  }
> @@ -704,12 +706,15 @@ int vm_stop_force_state(RunState state)
>      if (runstate_is_running()) {
>          return vm_stop(state);
>      } else {
> +        int ret;
>          runstate_set(state);
>  
>          bdrv_drain_all();
>          /* Make sure to return an error if the flush in a previous vm_stop()
>           * failed. */
> -        return bdrv_flush_all();
> +        ret = bdrv_flush_all();
> +        trace_vm_stop_flush_all(ret);
> +        return ret;
>      }
>  }
>  
> diff --git a/softmmu/trace-events b/softmmu/trace-events
> index b80ca042e1..f11b427544 100644
> --- a/softmmu/trace-events
> +++ b/softmmu/trace-events
> @@ -19,6 +19,9 @@ flatview_new(void *view, void *root) "%p (root %p)"
>  flatview_destroy(void *view, void *root) "%p (root %p)"
>  flatview_destroy_rcu(void *view, void *root) "%p (root %p)"
>  
> +# softmmu.c
> +vm_stop_flush_all(int ret) "ret %d"
> +
>  # vl.c
>  vm_state_notify(int running, int reason, const char *reason_str) "running %d reason %d (%s)"
>  load_file(const char *name, const char *path) "name %s location %s"
> -- 
> 2.30.2
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



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

* Re: [PATCH 4/5] block: add trace point when fdatasync fails
  2021-04-15 13:58 ` [PATCH 4/5] block: add trace point when fdatasync fails Daniel P. Berrangé
@ 2021-04-15 16:34   ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 11+ messages in thread
From: Dr. David Alan Gilbert @ 2021-04-15 16:34 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Kevin Wolf, qemu-block, Juan Quintela, Richard Henderson,
	qemu-devel, Max Reitz, Paolo Bonzini

* Daniel P. Berrangé (berrange@redhat.com) wrote:
> A flush failure is a critical failure scenario for some operations.
> For example, it will prevent migration from completing, as it will
> make vm_stop() report an error. Thus it is important to have a
> trace point present for debugging.
> 
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

I'd have had to admit to not having thought that would fail; the fact
we're debugging something where it does, suggests it's a good idea!


Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  block/file-posix.c | 2 ++
>  block/trace-events | 1 +
>  2 files changed, 3 insertions(+)
> 
> diff --git a/block/file-posix.c b/block/file-posix.c
> index 99cf452f84..6aafeda44f 100644
> --- a/block/file-posix.c
> +++ b/block/file-posix.c
> @@ -1362,6 +1362,8 @@ static int handle_aiocb_flush(void *opaque)
>  
>      ret = qemu_fdatasync(aiocb->aio_fildes);
>      if (ret == -1) {
> +        trace_file_flush_fdatasync_failed(errno);
> +
>          /* There is no clear definition of the semantics of a failing fsync(),
>           * so we may have to assume the worst. The sad truth is that this
>           * assumption is correct for Linux. Some pages are now probably marked
> diff --git a/block/trace-events b/block/trace-events
> index 1a12d634e2..c8a943e992 100644
> --- a/block/trace-events
> +++ b/block/trace-events
> @@ -206,6 +206,7 @@ file_copy_file_range(void *bs, int src, int64_t src_off, int dst, int64_t dst_of
>  file_FindEjectableOpticalMedia(const char *media) "Matching using %s"
>  file_setup_cdrom(const char *partition) "Using %s as optical disc"
>  file_hdev_is_sg(int type, int version) "SG device found: type=%d, version=%d"
> +file_flush_fdatasync_failed(int err) "errno %d"
>  
>  # sheepdog.c
>  sheepdog_reconnect_to_sdog(void) "Wait for connection to be established"
> -- 
> 2.30.2
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



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

* Re: [PATCH 5/5] block: remove duplicate trace.h include
  2021-04-15 13:58 ` [PATCH 5/5] block: remove duplicate trace.h include Daniel P. Berrangé
@ 2021-04-15 16:37   ` Dr. David Alan Gilbert
  0 siblings, 0 replies; 11+ messages in thread
From: Dr. David Alan Gilbert @ 2021-04-15 16:37 UTC (permalink / raw)
  To: Daniel P. Berrangé
  Cc: Kevin Wolf, qemu-block, Juan Quintela, Richard Henderson,
	qemu-devel, Max Reitz, Paolo Bonzini

* Daniel P. Berrangé (berrange@redhat.com) wrote:
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> ---
>  block/file-posix.c | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/block/file-posix.c b/block/file-posix.c
> index 6aafeda44f..2538e43299 100644
> --- a/block/file-posix.c
> +++ b/block/file-posix.c
> @@ -106,8 +106,6 @@
>  #include <xfs/xfs.h>
>  #endif
>  
> -#include "trace.h"
> -
>  /* OS X does not have O_DSYNC */
>  #ifndef O_DSYNC
>  #ifdef O_SYNC
> -- 
> 2.30.2
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK



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

* Re: [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure
  2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
                   ` (4 preceding siblings ...)
  2021-04-15 13:58 ` [PATCH 5/5] block: remove duplicate trace.h include Daniel P. Berrangé
@ 2021-04-15 19:33 ` Connor Kuehl
  5 siblings, 0 replies; 11+ messages in thread
From: Connor Kuehl @ 2021-04-15 19:33 UTC (permalink / raw)
  To: Daniel P. Berrangé, qemu-devel
  Cc: Kevin Wolf, qemu-block, Juan Quintela, Richard Henderson,
	Dr. David Alan Gilbert, Max Reitz, Paolo Bonzini

On 4/15/21 8:58 AM, Daniel P. Berrangé wrote:
> I spent a while debugging a tricky migration failure today which was
> ultimately caused by fdatasync() getting EACCESS. The existing probes
> were not sufficient to diagnose this, so I had to resort to GDB. This
> improves probes and block error reporting to make future diagnosis
> possible without GDB.
> 
> Daniel P. Berrangé (5):
>    migration: add trace point when vm_stop_force_state fails
>    softmmu: add trace point when bdrv_flush_all fails
>    block: preserve errno from fdatasync failures
>    block: add trace point when fdatasync fails
>    block: remove duplicate trace.h include
> 
>   block/file-posix.c     | 10 +++++-----
>   block/trace-events     |  1 +
>   migration/migration.c  |  1 +
>   migration/trace-events |  1 +
>   softmmu/cpus.c         |  7 ++++++-
>   softmmu/trace-events   |  3 +++
>   6 files changed, 17 insertions(+), 6 deletions(-)
> 

For the series:

Reviewed-by: Connor Kuehl <ckuehl@redhat.com>



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

end of thread, other threads:[~2021-04-15 19:34 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-15 13:58 [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Daniel P. Berrangé
2021-04-15 13:58 ` [PATCH 1/5] migration: add trace point when vm_stop_force_state fails Daniel P. Berrangé
2021-04-15 16:30   ` Dr. David Alan Gilbert
2021-04-15 13:58 ` [PATCH 2/5] softmmu: add trace point when bdrv_flush_all fails Daniel P. Berrangé
2021-04-15 16:31   ` Dr. David Alan Gilbert
2021-04-15 13:58 ` [PATCH 3/5] block: preserve errno from fdatasync failures Daniel P. Berrangé
2021-04-15 13:58 ` [PATCH 4/5] block: add trace point when fdatasync fails Daniel P. Berrangé
2021-04-15 16:34   ` Dr. David Alan Gilbert
2021-04-15 13:58 ` [PATCH 5/5] block: remove duplicate trace.h include Daniel P. Berrangé
2021-04-15 16:37   ` Dr. David Alan Gilbert
2021-04-15 19:33 ` [PATCH 0/5] block, migration: improve debugging of migration bdrv_flush failure Connor Kuehl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).