diff mbox

[06/36] migration: If there is one error, it makes no sense to continue

Message ID 1761964d57e56e8d29280b62315de665865299d6.1318326683.git.quintela@redhat.com
State New
Headers show

Commit Message

Juan Quintela Oct. 11, 2011, 10 a.m. UTC
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 buffered_file.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)

Comments

Anthony Liguori Oct. 17, 2011, 1:56 p.m. UTC | #1
On 10/11/2011 05:00 AM, Juan Quintela wrote:
> Signed-off-by: Juan Quintela<quintela@redhat.com>

The original intention of returning zero was to force a quick finish of the 
migration.

I think this code makes things more brittle because now if you're not doing 
error checking in the throttling path, you'll just pause the migration forever 
instead of fast forwarding to a point where you're actually checking for errors.

Regards,

Anthony Liguori

> ---
>   buffered_file.c |    6 +++---
>   1 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/buffered_file.c b/buffered_file.c
> index 486af57..bcdf04f 100644
> --- a/buffered_file.c
> +++ b/buffered_file.c
> @@ -193,9 +193,9 @@ static int buffered_rate_limit(void *opaque)
>   {
>       QEMUFileBuffered *s = opaque;
>
> -    if (s->has_error)
> -        return 0;
> -
> +    if (s->has_error) {
> +        return 1;
> +    }
>       if (s->freeze_output)
>           return 1;
>
Juan Quintela Oct. 17, 2011, 4:58 p.m. UTC | #2
Anthony Liguori <anthony@codemonkey.ws> wrote:
> On 10/11/2011 05:00 AM, Juan Quintela wrote:
>> Signed-off-by: Juan Quintela<quintela@redhat.com>
>
> The original intention of returning zero was to force a quick finish
> of the migration.
>
> I think this code makes things more brittle because now if you're not
> doing error checking in the throttling path, you'll just pause the
> migration forever instead of fast forwarding to a point where you're
> actually checking for errors.


This is the only caller:

    while (!qemu_file_rate_limit(f)) {
        int bytes_sent;

        bytes_sent = ram_save_block(f);
        bytes_transferred += bytes_sent;
        if (bytes_sent == 0) { /* no more blocks */
            break;
        }
    }

The error that I was finding is that whe get one error, we stay on that
loop a lot of time.  This change just made the error be discovered
instantanously.

Later, Juan.


>
> Regards,
>
> Anthony Liguori
>
>> ---
>>   buffered_file.c |    6 +++---
>>   1 files changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/buffered_file.c b/buffered_file.c
>> index 486af57..bcdf04f 100644
>> --- a/buffered_file.c
>> +++ b/buffered_file.c
>> @@ -193,9 +193,9 @@ static int buffered_rate_limit(void *opaque)
>>   {
>>       QEMUFileBuffered *s = opaque;
>>
>> -    if (s->has_error)
>> -        return 0;
>> -
>> +    if (s->has_error) {
>> +        return 1;
>> +    }
>>       if (s->freeze_output)
>>           return 1;
>>
diff mbox

Patch

diff --git a/buffered_file.c b/buffered_file.c
index 486af57..bcdf04f 100644
--- a/buffered_file.c
+++ b/buffered_file.c
@@ -193,9 +193,9 @@  static int buffered_rate_limit(void *opaque)
 {
     QEMUFileBuffered *s = opaque;

-    if (s->has_error)
-        return 0;
-
+    if (s->has_error) {
+        return 1;
+    }
     if (s->freeze_output)
         return 1;