All of lore.kernel.org
 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 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.