[Qemu-devel] [PATCH 2/3] migration/postcopy: break the loop when there is no more page to discard

Wei Yang posted 3 patches 6 years, 7 months ago
Maintainers: Juan Quintela <quintela@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
[Qemu-devel] [PATCH 2/3] migration/postcopy: break the loop when there is no more page to discard
Posted by Wei Yang 6 years, 7 months ago
When one is equal or bigger then end, it means there is no page to
discard. Just break the loop in this case instead of processing it.

No functional change, just refactor it a little.

Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
---
 migration/ram.c | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/migration/ram.c b/migration/ram.c
index b78169e811..b41b58ee54 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2776,23 +2776,23 @@ static int postcopy_send_discard_bm_ram(MigrationState *ms,
 
     for (current = 0; current < end; ) {
         unsigned long one = find_next_bit(unsentmap, end, current);
+        unsigned long zero, discard_length;
 
-        if (one < end) {
-            unsigned long zero = find_next_zero_bit(unsentmap, end, one + 1);
-            unsigned long discard_length;
+        if (one >= end) {
+            break;
+        }
 
-            if (zero >= end) {
-                discard_length = end - one;
-            } else {
-                discard_length = zero - one;
-            }
-            if (discard_length) {
-                postcopy_discard_send_range(ms, pds, one, discard_length);
-            }
-            current = one + discard_length;
+        zero = find_next_zero_bit(unsentmap, end, one + 1);
+
+        if (zero >= end) {
+            discard_length = end - one;
         } else {
-            current = one;
+            discard_length = zero - one;
+        }
+        if (discard_length) {
+            postcopy_discard_send_range(ms, pds, one, discard_length);
         }
+        current = one + discard_length;
     }
 
     return 0;
-- 
2.19.1


Re: [Qemu-devel] [PATCH 2/3] migration/postcopy: break the loop when there is no more page to discard
Posted by Dr. David Alan Gilbert 6 years, 7 months ago
* Wei Yang (richardw.yang@linux.intel.com) wrote:
> When one is equal or bigger then end, it means there is no page to
> discard. Just break the loop in this case instead of processing it.
> 
> No functional change, just refactor it a little.
> 
> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>

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

> ---
>  migration/ram.c | 26 +++++++++++++-------------
>  1 file changed, 13 insertions(+), 13 deletions(-)
> 
> diff --git a/migration/ram.c b/migration/ram.c
> index b78169e811..b41b58ee54 100644
> --- a/migration/ram.c
> +++ b/migration/ram.c
> @@ -2776,23 +2776,23 @@ static int postcopy_send_discard_bm_ram(MigrationState *ms,
>  
>      for (current = 0; current < end; ) {
>          unsigned long one = find_next_bit(unsentmap, end, current);
> +        unsigned long zero, discard_length;
>  
> -        if (one < end) {
> -            unsigned long zero = find_next_zero_bit(unsentmap, end, one + 1);
> -            unsigned long discard_length;
> +        if (one >= end) {
> +            break;
> +        }
>  
> -            if (zero >= end) {
> -                discard_length = end - one;
> -            } else {
> -                discard_length = zero - one;
> -            }
> -            if (discard_length) {
> -                postcopy_discard_send_range(ms, pds, one, discard_length);
> -            }
> -            current = one + discard_length;
> +        zero = find_next_zero_bit(unsentmap, end, one + 1);
> +
> +        if (zero >= end) {
> +            discard_length = end - one;
>          } else {
> -            current = one;
> +            discard_length = zero - one;
> +        }
> +        if (discard_length) {
> +            postcopy_discard_send_range(ms, pds, one, discard_length);
>          }
> +        current = one + discard_length;
>      }
>  
>      return 0;
> -- 
> 2.19.1
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK