[PATCH 11/20] migration: postcopy_pause_fault_thread() never fails

Peter Xu posted 20 patches 3 years, 11 months ago
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Eric Blake <eblake@redhat.com>, Laurent Vivier <lvivier@redhat.com>, Juan Quintela <quintela@redhat.com>, Thomas Huth <thuth@redhat.com>, Markus Armbruster <armbru@redhat.com>
There is a newer version of this series
[PATCH 11/20] migration: postcopy_pause_fault_thread() never fails
Posted by Peter Xu 3 years, 11 months ago
Per the title, remove the return code and simplify the callers as the errors
will never be triggered.  No functional change intended.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 migration/postcopy-ram.c | 25 ++++---------------------
 1 file changed, 4 insertions(+), 21 deletions(-)

diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
index 6be510fea4..738cc55fa6 100644
--- a/migration/postcopy-ram.c
+++ b/migration/postcopy-ram.c
@@ -890,15 +890,11 @@ static void mark_postcopy_blocktime_end(uintptr_t addr)
                                       affected_cpu);
 }
 
-static bool postcopy_pause_fault_thread(MigrationIncomingState *mis)
+static void postcopy_pause_fault_thread(MigrationIncomingState *mis)
 {
     trace_postcopy_pause_fault_thread();
-
     qemu_sem_wait(&mis->postcopy_pause_sem_fault);
-
     trace_postcopy_pause_fault_thread_continued();
-
-    return true;
 }
 
 /*
@@ -958,13 +954,7 @@ static void *postcopy_ram_fault_thread(void *opaque)
              * broken already using the event. We should hold until
              * the channel is rebuilt.
              */
-            if (postcopy_pause_fault_thread(mis)) {
-                /* Continue to read the userfaultfd */
-            } else {
-                error_report("%s: paused but don't allow to continue",
-                             __func__);
-                break;
-            }
+            postcopy_pause_fault_thread(mis);
         }
 
         if (pfd[1].revents) {
@@ -1038,15 +1028,8 @@ retry:
                                         msg.arg.pagefault.address);
             if (ret) {
                 /* May be network failure, try to wait for recovery */
-                if (postcopy_pause_fault_thread(mis)) {
-                    /* We got reconnected somehow, try to continue */
-                    goto retry;
-                } else {
-                    /* This is a unavoidable fault */
-                    error_report("%s: postcopy_request_page() get %d",
-                                 __func__, ret);
-                    break;
-                }
+                postcopy_pause_fault_thread(mis);
+                goto retry;
             }
         }
 
-- 
2.32.0


Re: [PATCH 11/20] migration: postcopy_pause_fault_thread() never fails
Posted by Dr. David Alan Gilbert 3 years, 11 months ago
* Peter Xu (peterx@redhat.com) wrote:
> Per the title, remove the return code and simplify the callers as the errors
> will never be triggered.  No functional change intended.
> 
> Signed-off-by: Peter Xu <peterx@redhat.com>

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

> ---
>  migration/postcopy-ram.c | 25 ++++---------------------
>  1 file changed, 4 insertions(+), 21 deletions(-)
> 
> diff --git a/migration/postcopy-ram.c b/migration/postcopy-ram.c
> index 6be510fea4..738cc55fa6 100644
> --- a/migration/postcopy-ram.c
> +++ b/migration/postcopy-ram.c
> @@ -890,15 +890,11 @@ static void mark_postcopy_blocktime_end(uintptr_t addr)
>                                        affected_cpu);
>  }
>  
> -static bool postcopy_pause_fault_thread(MigrationIncomingState *mis)
> +static void postcopy_pause_fault_thread(MigrationIncomingState *mis)
>  {
>      trace_postcopy_pause_fault_thread();
> -
>      qemu_sem_wait(&mis->postcopy_pause_sem_fault);
> -
>      trace_postcopy_pause_fault_thread_continued();
> -
> -    return true;
>  }
>  
>  /*
> @@ -958,13 +954,7 @@ static void *postcopy_ram_fault_thread(void *opaque)
>               * broken already using the event. We should hold until
>               * the channel is rebuilt.
>               */
> -            if (postcopy_pause_fault_thread(mis)) {
> -                /* Continue to read the userfaultfd */
> -            } else {
> -                error_report("%s: paused but don't allow to continue",
> -                             __func__);
> -                break;
> -            }
> +            postcopy_pause_fault_thread(mis);
>          }
>  
>          if (pfd[1].revents) {
> @@ -1038,15 +1028,8 @@ retry:
>                                          msg.arg.pagefault.address);
>              if (ret) {
>                  /* May be network failure, try to wait for recovery */
> -                if (postcopy_pause_fault_thread(mis)) {
> -                    /* We got reconnected somehow, try to continue */
> -                    goto retry;
> -                } else {
> -                    /* This is a unavoidable fault */
> -                    error_report("%s: postcopy_request_page() get %d",
> -                                 __func__, ret);
> -                    break;
> -                }
> +                postcopy_pause_fault_thread(mis);
> +                goto retry;
>              }
>          }
>  
> -- 
> 2.32.0
> 
-- 
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK