* [Qemu-devel] [PATCH 0/2] qemu-img: Fix division by zero for zero size images
@ 2012-10-12 12:31 Kevin Wolf
2012-10-12 12:31 ` [Qemu-devel] [PATCH 1/2] " Kevin Wolf
2012-10-12 12:31 ` [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image Kevin Wolf
0 siblings, 2 replies; 7+ messages in thread
From: Kevin Wolf @ 2012-10-12 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: kwolf
Kevin Wolf (2):
qemu-img: Fix division by zero for zero size images
qemu-iotests: Test qemu-img operation on zero size image
qemu-img.c | 23 ++++++++----
tests/qemu-iotests/041 | 78 ++++++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/041.out | 15 ++++++++
tests/qemu-iotests/group | 1 +
4 files changed, 109 insertions(+), 8 deletions(-)
create mode 100755 tests/qemu-iotests/041
create mode 100644 tests/qemu-iotests/041.out
--
1.7.6.5
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH 1/2] qemu-img: Fix division by zero for zero size images
2012-10-12 12:31 [Qemu-devel] [PATCH 0/2] qemu-img: Fix division by zero for zero size images Kevin Wolf
@ 2012-10-12 12:31 ` Kevin Wolf
2012-10-12 16:56 ` Paolo Bonzini
2012-10-12 12:31 ` [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image Kevin Wolf
1 sibling, 1 reply; 7+ messages in thread
From: Kevin Wolf @ 2012-10-12 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: kwolf
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
qemu-img.c | 23 +++++++++++++++--------
1 files changed, 15 insertions(+), 8 deletions(-)
diff --git a/qemu-img.c b/qemu-img.c
index f17f187..849eb41 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -674,7 +674,7 @@ static int img_convert(int argc, char **argv)
QEMUOptionParameter *out_baseimg_param;
char *options = NULL;
const char *snapshot_name = NULL;
- float local_progress;
+ float local_progress = 0;
int min_sparse = 8; /* Need at least 4k of zeros for sparse detection */
fmt = NULL;
@@ -914,8 +914,10 @@ static int img_convert(int argc, char **argv)
sector_num = 0;
nb_sectors = total_sectors;
- local_progress = (float)100 /
- (nb_sectors / MIN(nb_sectors, cluster_sectors));
+ if (nb_sectors != 0) {
+ local_progress = (float)100 /
+ (nb_sectors / MIN(nb_sectors, cluster_sectors));
+ }
for(;;) {
int64_t bs_num;
@@ -986,8 +988,10 @@ static int img_convert(int argc, char **argv)
sector_num = 0; // total number of sectors converted so far
nb_sectors = total_sectors - sector_num;
- local_progress = (float)100 /
- (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512));
+ if (nb_sectors != 0) {
+ local_progress = (float)100 /
+ (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512));
+ }
for(;;) {
nb_sectors = total_sectors - sector_num;
@@ -1585,7 +1589,7 @@ static int img_rebase(int argc, char **argv)
int n;
uint8_t * buf_old;
uint8_t * buf_new;
- float local_progress;
+ float local_progress = 0;
buf_old = qemu_blockalign(bs, IO_BUF_SIZE);
buf_new = qemu_blockalign(bs, IO_BUF_SIZE);
@@ -1594,8 +1598,11 @@ static int img_rebase(int argc, char **argv)
bdrv_get_geometry(bs_old_backing, &old_backing_num_sectors);
bdrv_get_geometry(bs_new_backing, &new_backing_num_sectors);
- local_progress = (float)100 /
- (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512));
+ if (num_sectors != 0) {
+ local_progress = (float)100 /
+ (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512));
+ }
+
for (sector = 0; sector < num_sectors; sector += n) {
/* How many sectors can we handle with the next read? */
--
1.7.6.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image
2012-10-12 12:31 [Qemu-devel] [PATCH 0/2] qemu-img: Fix division by zero for zero size images Kevin Wolf
2012-10-12 12:31 ` [Qemu-devel] [PATCH 1/2] " Kevin Wolf
@ 2012-10-12 12:31 ` Kevin Wolf
2012-10-12 16:57 ` Paolo Bonzini
1 sibling, 1 reply; 7+ messages in thread
From: Kevin Wolf @ 2012-10-12 12:31 UTC (permalink / raw)
To: qemu-devel; +Cc: kwolf
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
---
tests/qemu-iotests/041 | 78 ++++++++++++++++++++++++++++++++++++++++++++
tests/qemu-iotests/041.out | 15 ++++++++
tests/qemu-iotests/group | 1 +
3 files changed, 94 insertions(+), 0 deletions(-)
create mode 100755 tests/qemu-iotests/041
create mode 100644 tests/qemu-iotests/041.out
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
new file mode 100755
index 0000000..c3c3ca8
--- /dev/null
+++ b/tests/qemu-iotests/041
@@ -0,0 +1,78 @@
+#!/bin/bash
+#
+# Test qemu-img operation on zero size images
+#
+# Copyright (C) 2012 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# creator
+owner=kwolf@redhat.com
+
+seq=`basename $0`
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1 # failure is the default!
+
+_cleanup()
+{
+ _cleanup_test_img
+}
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+# get standard environment, filters and checks
+. ./common.rc
+. ./common.filter
+
+_supported_fmt qcow2 qcow qed vmdk
+_supported_proto file
+_supported_os Linux
+
+echo
+echo "== Creating zero size image =="
+
+_make_test_img 0
+_check_test_img
+
+mv $TEST_IMG $TEST_IMG.orig
+
+echo
+echo "== Converting the image =="
+
+$QEMU_IMG convert -O $IMGFMT $TEST_IMG.orig $TEST_IMG
+_check_test_img
+
+echo
+echo "== Converting the image, compressed =="
+
+if [ "$IMGFMT" == "qcow2" ]; then
+ $QEMU_IMG convert -c -O $IMGFMT $TEST_IMG.orig $TEST_IMG
+fi
+_check_test_img
+
+echo
+echo "== Rebasing the image =="
+
+$QEMU_IMG rebase -u -b $TEST_IMG.orig $TEST_IMG
+$QEMU_IMG rebase -b $TEST_IMG.orig $TEST_IMG
+_check_test_img
+
+# success, all done
+echo "*** done"
+rm -f $seq.full
+status=0
+
diff --git a/tests/qemu-iotests/041.out b/tests/qemu-iotests/041.out
new file mode 100644
index 0000000..98514fa
--- /dev/null
+++ b/tests/qemu-iotests/041.out
@@ -0,0 +1,15 @@
+QA output created by 041
+
+== Creating zero size image ==
+Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
+No errors were found on the image.
+
+== Converting the image ==
+No errors were found on the image.
+
+== Converting the image, compressed ==
+No errors were found on the image.
+
+== Rebasing the image ==
+No errors were found on the image.
+*** done
diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
index 66d2ba9..fa4a7da 100644
--- a/tests/qemu-iotests/group
+++ b/tests/qemu-iotests/group
@@ -47,3 +47,4 @@
038 rw auto backing
039 rw auto
040 rw auto
+041 rw auto quick
--
1.7.6.5
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] qemu-img: Fix division by zero for zero size images
2012-10-12 12:31 ` [Qemu-devel] [PATCH 1/2] " Kevin Wolf
@ 2012-10-12 16:56 ` Paolo Bonzini
0 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2012-10-12 16:56 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
Il 12/10/2012 14:31, Kevin Wolf ha scritto:
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> qemu-img.c | 23 +++++++++++++++--------
> 1 files changed, 15 insertions(+), 8 deletions(-)
>
> diff --git a/qemu-img.c b/qemu-img.c
> index f17f187..849eb41 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -674,7 +674,7 @@ static int img_convert(int argc, char **argv)
> QEMUOptionParameter *out_baseimg_param;
> char *options = NULL;
> const char *snapshot_name = NULL;
> - float local_progress;
> + float local_progress = 0;
> int min_sparse = 8; /* Need at least 4k of zeros for sparse detection */
>
> fmt = NULL;
> @@ -914,8 +914,10 @@ static int img_convert(int argc, char **argv)
> sector_num = 0;
>
> nb_sectors = total_sectors;
> - local_progress = (float)100 /
> - (nb_sectors / MIN(nb_sectors, cluster_sectors));
> + if (nb_sectors != 0) {
> + local_progress = (float)100 /
> + (nb_sectors / MIN(nb_sectors, cluster_sectors));
> + }
>
> for(;;) {
> int64_t bs_num;
> @@ -986,8 +988,10 @@ static int img_convert(int argc, char **argv)
>
> sector_num = 0; // total number of sectors converted so far
> nb_sectors = total_sectors - sector_num;
> - local_progress = (float)100 /
> - (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512));
> + if (nb_sectors != 0) {
> + local_progress = (float)100 /
> + (nb_sectors / MIN(nb_sectors, IO_BUF_SIZE / 512));
> + }
>
> for(;;) {
> nb_sectors = total_sectors - sector_num;
> @@ -1585,7 +1589,7 @@ static int img_rebase(int argc, char **argv)
> int n;
> uint8_t * buf_old;
> uint8_t * buf_new;
> - float local_progress;
> + float local_progress = 0;
>
> buf_old = qemu_blockalign(bs, IO_BUF_SIZE);
> buf_new = qemu_blockalign(bs, IO_BUF_SIZE);
> @@ -1594,8 +1598,11 @@ static int img_rebase(int argc, char **argv)
> bdrv_get_geometry(bs_old_backing, &old_backing_num_sectors);
> bdrv_get_geometry(bs_new_backing, &new_backing_num_sectors);
>
> - local_progress = (float)100 /
> - (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512));
> + if (num_sectors != 0) {
> + local_progress = (float)100 /
> + (num_sectors / MIN(num_sectors, IO_BUF_SIZE / 512));
> + }
> +
> for (sector = 0; sector < num_sectors; sector += n) {
>
> /* How many sectors can we handle with the next read? */
>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
/me keeps this in mind for reviewing Mirek's qemu-img compare series
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image
2012-10-12 12:31 ` [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image Kevin Wolf
@ 2012-10-12 16:57 ` Paolo Bonzini
2012-10-15 8:47 ` Kevin Wolf
0 siblings, 1 reply; 7+ messages in thread
From: Paolo Bonzini @ 2012-10-12 16:57 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
Il 12/10/2012 14:31, Kevin Wolf ha scritto:
> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
> ---
> tests/qemu-iotests/041 | 78 ++++++++++++++++++++++++++++++++++++++++++++
> tests/qemu-iotests/041.out | 15 ++++++++
> tests/qemu-iotests/group | 1 +
> 3 files changed, 94 insertions(+), 0 deletions(-)
> create mode 100755 tests/qemu-iotests/041
> create mode 100644 tests/qemu-iotests/041.out
>
> diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
> new file mode 100755
> index 0000000..c3c3ca8
> --- /dev/null
> +++ b/tests/qemu-iotests/041
> @@ -0,0 +1,78 @@
> +#!/bin/bash
> +#
> +# Test qemu-img operation on zero size images
> +#
> +# Copyright (C) 2012 Red Hat, Inc.
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> +# GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program. If not, see <http://www.gnu.org/licenses/>.
> +#
> +
> +# creator
> +owner=kwolf@redhat.com
> +
> +seq=`basename $0`
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=1 # failure is the default!
> +
> +_cleanup()
> +{
> + _cleanup_test_img
> +}
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +# get standard environment, filters and checks
> +. ./common.rc
> +. ./common.filter
> +
> +_supported_fmt qcow2 qcow qed vmdk
> +_supported_proto file
> +_supported_os Linux
> +
> +echo
> +echo "== Creating zero size image =="
> +
> +_make_test_img 0
> +_check_test_img
> +
> +mv $TEST_IMG $TEST_IMG.orig
> +
> +echo
> +echo "== Converting the image =="
> +
> +$QEMU_IMG convert -O $IMGFMT $TEST_IMG.orig $TEST_IMG
> +_check_test_img
> +
> +echo
> +echo "== Converting the image, compressed =="
> +
> +if [ "$IMGFMT" == "qcow2" ]; then
> + $QEMU_IMG convert -c -O $IMGFMT $TEST_IMG.orig $TEST_IMG
> +fi
> +_check_test_img
> +
> +echo
> +echo "== Rebasing the image =="
> +
> +$QEMU_IMG rebase -u -b $TEST_IMG.orig $TEST_IMG
> +$QEMU_IMG rebase -b $TEST_IMG.orig $TEST_IMG
> +_check_test_img
> +
> +# success, all done
> +echo "*** done"
> +rm -f $seq.full
> +status=0
> +
> diff --git a/tests/qemu-iotests/041.out b/tests/qemu-iotests/041.out
> new file mode 100644
> index 0000000..98514fa
> --- /dev/null
> +++ b/tests/qemu-iotests/041.out
> @@ -0,0 +1,15 @@
> +QA output created by 041
> +
> +== Creating zero size image ==
> +Formatting 'TEST_DIR/t.IMGFMT', fmt=IMGFMT size=0
> +No errors were found on the image.
> +
> +== Converting the image ==
> +No errors were found on the image.
> +
> +== Converting the image, compressed ==
> +No errors were found on the image.
> +
> +== Rebasing the image ==
> +No errors were found on the image.
> +*** done
> diff --git a/tests/qemu-iotests/group b/tests/qemu-iotests/group
> index 66d2ba9..fa4a7da 100644
> --- a/tests/qemu-iotests/group
> +++ b/tests/qemu-iotests/group
> @@ -47,3 +47,4 @@
> 038 rw auto backing
> 039 rw auto
> 040 rw auto
> +041 rw auto quick
>
FWIW, this will require renaming the mirror test to 042 :( Since I have
multiple patches touching the file while you have just one, any chance
you can hold up this series for a week or so?
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image
2012-10-12 16:57 ` Paolo Bonzini
@ 2012-10-15 8:47 ` Kevin Wolf
2012-10-15 9:42 ` Paolo Bonzini
0 siblings, 1 reply; 7+ messages in thread
From: Kevin Wolf @ 2012-10-15 8:47 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel
Am 12.10.2012 18:57, schrieb Paolo Bonzini:
> FWIW, this will require renaming the mirror test to 042 :( Since I have
> multiple patches touching the file while you have just one, any chance
> you can hold up this series for a week or so?
So is 042 still free? Then I'd just change this patch to use 042.
There's no strict rule that 041 must be committed earlier than 042.
Kevin
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image
2012-10-15 8:47 ` Kevin Wolf
@ 2012-10-15 9:42 ` Paolo Bonzini
0 siblings, 0 replies; 7+ messages in thread
From: Paolo Bonzini @ 2012-10-15 9:42 UTC (permalink / raw)
To: Kevin Wolf; +Cc: qemu-devel
> Am 12.10.2012 18:57, schrieb Paolo Bonzini:
> > FWIW, this will require renaming the mirror test to 042 :( Since I
> > have
> > multiple patches touching the file while you have just one, any
> > chance
> > you can hold up this series for a week or so?
>
> So is 042 still free? Then I'd just change this patch to use 042.
> There's no strict rule that 041 must be committed earlier than 042.
Yes, that would work too--thanks!
Paolo
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2012-10-15 9:43 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-12 12:31 [Qemu-devel] [PATCH 0/2] qemu-img: Fix division by zero for zero size images Kevin Wolf
2012-10-12 12:31 ` [Qemu-devel] [PATCH 1/2] " Kevin Wolf
2012-10-12 16:56 ` Paolo Bonzini
2012-10-12 12:31 ` [Qemu-devel] [PATCH 2/2] qemu-iotests: Test qemu-img operation on zero size image Kevin Wolf
2012-10-12 16:57 ` Paolo Bonzini
2012-10-15 8:47 ` Kevin Wolf
2012-10-15 9:42 ` Paolo Bonzini
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).