* [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate
@ 2010-12-25 20:52 Pierre Riteau
2011-01-09 19:37 ` [Qemu-devel] " Pierre Riteau
2011-01-11 11:54 ` [Qemu-devel] " Kevin Wolf
0 siblings, 2 replies; 5+ messages in thread
From: Pierre Riteau @ 2010-12-25 20:52 UTC (permalink / raw)
To: qemu-devel; +Cc: Pierre Riteau
When block migration is requested and no read-write block device is
present, a divide by zero exception is triggered because
total_sector_sum equals zero.
Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
---
block-migration.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/block-migration.c b/block-migration.c
index 1475325..d62d63e 100644
--- a/block-migration.c
+++ b/block-migration.c
@@ -350,7 +350,11 @@ static int blk_mig_save_bulked_block(Monitor *mon, QEMUFile *f)
}
}
- progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
+ if (block_mig_state.total_sector_sum != 0) {
+ progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
+ } else {
+ progress = 100;
+ }
if (progress != block_mig_state.prev_progress) {
block_mig_state.prev_progress = progress;
qemu_put_be64(f, (progress << BDRV_SECTOR_BITS)
--
1.7.3.4
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [Qemu-devel] Re: [PATCH] Avoid divide by zero when there is no block device to migrate
2010-12-25 20:52 [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate Pierre Riteau
@ 2011-01-09 19:37 ` Pierre Riteau
2011-01-11 11:54 ` [Qemu-devel] " Kevin Wolf
1 sibling, 0 replies; 5+ messages in thread
From: Pierre Riteau @ 2011-01-09 19:37 UTC (permalink / raw)
To: qemu-devel
On 25 déc. 2010, at 21:52, Pierre Riteau wrote:
> When block migration is requested and no read-write block device is
> present, a divide by zero exception is triggered because
> total_sector_sum equals zero.
>
> Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
> ---
> block-migration.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/block-migration.c b/block-migration.c
> index 1475325..d62d63e 100644
> --- a/block-migration.c
> +++ b/block-migration.c
> @@ -350,7 +350,11 @@ static int blk_mig_save_bulked_block(Monitor *mon, QEMUFile *f)
> }
> }
>
> - progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
> + if (block_mig_state.total_sector_sum != 0) {
> + progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
> + } else {
> + progress = 100;
> + }
> if (progress != block_mig_state.prev_progress) {
> block_mig_state.prev_progress = progress;
> qemu_put_be64(f, (progress << BDRV_SECTOR_BITS)
> --
> 1.7.3.4
>
Comments, anyone?
--
Pierre Riteau -- PhD student, Myriads team, IRISA, Rennes, France
http://perso.univ-rennes1.fr/pierre.riteau/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate
2010-12-25 20:52 [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate Pierre Riteau
2011-01-09 19:37 ` [Qemu-devel] " Pierre Riteau
@ 2011-01-11 11:54 ` Kevin Wolf
2011-01-12 11:01 ` Pierre Riteau
1 sibling, 1 reply; 5+ messages in thread
From: Kevin Wolf @ 2011-01-11 11:54 UTC (permalink / raw)
To: Pierre Riteau; +Cc: qemu-devel
Am 25.12.2010 21:52, schrieb Pierre Riteau:
> When block migration is requested and no read-write block device is
> present, a divide by zero exception is triggered because
> total_sector_sum equals zero.
>
> Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
Maybe in this case we should generate an error before actually starting
with block migration. If you bothered to request block migration you
certainly didn't have in mind to do nothing.
> ---
> block-migration.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/block-migration.c b/block-migration.c
> index 1475325..d62d63e 100644
> --- a/block-migration.c
> +++ b/block-migration.c
> @@ -350,7 +350,11 @@ static int blk_mig_save_bulked_block(Monitor *mon, QEMUFile *f)
> }
> }
>
> - progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
> + if (block_mig_state.total_sector_sum != 0) {
> + progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
This exceeds 80 characters per line.
> + } else {
> + progress = 100;
> + }
> if (progress != block_mig_state.prev_progress) {
> block_mig_state.prev_progress = progress;
> qemu_put_be64(f, (progress << BDRV_SECTOR_BITS)
Kevin
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate
2011-01-11 11:54 ` [Qemu-devel] " Kevin Wolf
@ 2011-01-12 11:01 ` Pierre Riteau
2011-01-12 11:40 ` Kevin Wolf
0 siblings, 1 reply; 5+ messages in thread
From: Pierre Riteau @ 2011-01-12 11:01 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
On 11 janv. 2011, at 12:54, Kevin Wolf wrote:
> Am 25.12.2010 21:52, schrieb Pierre Riteau:
>> When block migration is requested and no read-write block device is
>> present, a divide by zero exception is triggered because
>> total_sector_sum equals zero.
>>
>> Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
>
> Maybe in this case we should generate an error before actually starting
> with block migration. If you bothered to request block migration you
> certainly didn't have in mind to do nothing.
I had in mind a scenario where a management system would use block migration all the time, regardless of what kind of devices were plugged in the VM.
If we throw an error, should it be a fatal error? Or just a migration failed result given to the monitor?
>> ---
>> block-migration.c | 6 +++++-
>> 1 files changed, 5 insertions(+), 1 deletions(-)
>>
>> diff --git a/block-migration.c b/block-migration.c
>> index 1475325..d62d63e 100644
>> --- a/block-migration.c
>> +++ b/block-migration.c
>> @@ -350,7 +350,11 @@ static int blk_mig_save_bulked_block(Monitor *mon, QEMUFile *f)
>> }
>> }
>>
>> - progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
>> + if (block_mig_state.total_sector_sum != 0) {
>> + progress = completed_sector_sum * 100 / block_mig_state.total_sector_sum;
>
> This exceeds 80 characters per line.
>
>> + } else {
>> + progress = 100;
>> + }
>> if (progress != block_mig_state.prev_progress) {
>> block_mig_state.prev_progress = progress;
>> qemu_put_be64(f, (progress << BDRV_SECTOR_BITS)
>
> Kevin
--
Pierre Riteau -- PhD student, Myriads team, IRISA, Rennes, France
http://perso.univ-rennes1.fr/pierre.riteau/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate
2011-01-12 11:01 ` Pierre Riteau
@ 2011-01-12 11:40 ` Kevin Wolf
0 siblings, 0 replies; 5+ messages in thread
From: Kevin Wolf @ 2011-01-12 11:40 UTC (permalink / raw)
To: Pierre Riteau; +Cc: qemu-devel
Am 12.01.2011 12:01, schrieb Pierre Riteau:
> On 11 janv. 2011, at 12:54, Kevin Wolf wrote:
>
>> Am 25.12.2010 21:52, schrieb Pierre Riteau:
>>> When block migration is requested and no read-write block device is
>>> present, a divide by zero exception is triggered because
>>> total_sector_sum equals zero.
>>>
>>> Signed-off-by: Pierre Riteau <Pierre.Riteau@irisa.fr>
>>
>> Maybe in this case we should generate an error before actually starting
>> with block migration. If you bothered to request block migration you
>> certainly didn't have in mind to do nothing.
>
> I had in mind a scenario where a management system would use block migration all the time, regardless of what kind of devices were plugged in the VM.
> If we throw an error, should it be a fatal error? Or just a migration failed result given to the monitor?
Okay, that makes sense.
We could still check for this condition before really starting block
migration and complete it immediately (successfully, though). I'm also
okay with your patch as it's a very simple solution to the problem. If
you resend it with the > 80 characters line fixed, I'll apply it.
Kevin
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-01-12 12:02 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-25 20:52 [Qemu-devel] [PATCH] Avoid divide by zero when there is no block device to migrate Pierre Riteau
2011-01-09 19:37 ` [Qemu-devel] " Pierre Riteau
2011-01-11 11:54 ` [Qemu-devel] " Kevin Wolf
2011-01-12 11:01 ` Pierre Riteau
2011-01-12 11:40 ` Kevin Wolf
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).