* [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
* 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
* [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 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).