[arch-commits] Commit in qemu-kvm/trunk (2 files)
Date: Friday, May 14, 2010 @ 03:04:36 Author: tpowa Revision: 80239 upgpkg: qemu-kvm 0.12.4-1 bump to latest version Modified: qemu-kvm/trunk/PKGBUILD Deleted: qemu-kvm/trunk/block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff + PKGBUILD | 13 +- block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff | 49 -- 2 files changed, 5 insertions(+), 57 deletions(-) Modified: PKGBUILD === --- PKGBUILD2010-05-14 00:30:22 UTC (rev 80238) +++ PKGBUILD2010-05-14 07:04:36 UTC (rev 80239) @@ -1,8 +1,8 @@ # $Id$ # Maintainer: Tobias Powalowski tp...@archlinux.org pkgname=qemu-kvm -pkgver=0.12.3 -pkgrel=2 +pkgver=0.12.4 +pkgrel=1 pkgdesc=Latest KVM QEMU is a generic and open source processor emulator which achieves a good emulation speed by using dynamic translation. arch=(i686 x86_64) license=('GPL2' 'LGPL2.1') @@ -14,13 +14,11 @@ provides=('qemu') replaces=('kvm') source=(http://downloads.sourceforge.net/kvm/${pkgname}-${pkgver}.tar.gz -65-kvm.rules -block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff) +65-kvm.rules) build() { cd ${srcdir}/${pkgname}-${pkgver} -patch -p1 -i ${srcdir}/block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff || return 1 # fix esound building ./configure --prefix=/usr \ --audio-drv-list=alsa,sdl,oss,esd \ @@ -39,6 +37,5 @@ install -D -m644 ${srcdir}/65-kvm.rules \ ${pkgdir}/lib/udev/rules.d/65-kvm.rules } -md5sums=('ab484975004f66fb48cb5589bd9b9dcb' - 'b316a066d2f1bb57d8f5b7ea1d0d1caf' - '3d71cb1c3d7c24e4ee1a6264b6f60dca') +md5sums=('1c48b94f58403fb24247f9b5fb6abb9f' + 'b316a066d2f1bb57d8f5b7ea1d0d1caf') Deleted: block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff === --- block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff 2010-05-14 00:30:22 UTC (rev 80238) +++ block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff 2010-05-14 07:04:36 UTC (rev 80239) @@ -1,49 +0,0 @@ -From: Christoph Hellwig h...@lst.de -Date: Tue, 26 Jan 2010 13:49:08 + (+0100) -Subject: block: avoid creating too large iovecs in multiwrite_merge -X-Git-Url: http://git.kernel.org/?p=virt%2Fkvm%2Fqemu-kvm.git;a=commitdiff_plain;h=e2a305fb13ff0f5cf6ff80aaa90a5ed5954c - -block: avoid creating too large iovecs in multiwrite_merge - -If we go over the maximum number of iovecs support by syscall we get -back EINVAL from the kernel which translate to I/O errors for the guest. - -Add a MAX_IOV defintion for platforms that don't have it. For now we use -the same 1024 define that's used on Linux and various other platforms, -but until the windows block backend implements some kind of vectored I/O -it doesn't matter. - -Signed-off-by: Christoph Hellwig h...@lst.de -Signed-off-by: Anthony Liguori aligu...@us.ibm.com - -diff --git a/block.c b/block.c -index 9c106a8..1919d19 100644 a/block.c -+++ b/block.c -@@ -1691,6 +1691,10 @@ static int multiwrite_merge(BlockDriverState *bs, BlockRequest *reqs, - merge = bs-drv-bdrv_merge_requests(bs, reqs[outidx], reqs[i]); - } - -+if (reqs[outidx].qiov-niov + reqs[i].qiov-niov + 1 IOV_MAX) { -+merge = 0; -+} -+ - if (merge) { - size_t size; - QEMUIOVector *qiov = qemu_mallocz(sizeof(*qiov)); -diff --git a/qemu-common.h b/qemu-common.h -index ae4f23b..b09f717 100644 a/qemu-common.h -+++ b/qemu-common.h -@@ -54,6 +54,10 @@ struct iovec { - void *iov_base; - size_t iov_len; - }; -+/* -+ * Use the same value as Linux for now. -+ */ -+#define IOV_MAX 1024 - #else - #include sys/uio.h - #endif
[arch-commits] Commit in qemu-kvm/trunk (2 files)
Date: Sunday, April 11, 2010 @ 07:29:25 Author: thomas Revision: 77164 Fix a problem with virtio-blk where lots of I/O errors occur (easily reproducible by running pacman -Syy) Added: qemu-kvm/trunk/block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff Modified: qemu-kvm/trunk/PKGBUILD + PKGBUILD |9 + block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff | 49 ++ 2 files changed, 55 insertions(+), 3 deletions(-) Modified: PKGBUILD === --- PKGBUILD2010-04-11 11:22:39 UTC (rev 77163) +++ PKGBUILD2010-04-11 11:29:25 UTC (rev 77164) @@ -2,7 +2,7 @@ # Maintainer: Tobias Powalowski tp...@archlinux.org pkgname=qemu-kvm pkgver=0.12.3 -pkgrel=1 +pkgrel=2 pkgdesc=Latest KVM QEMU is a generic and open source processor emulator which achieves a good emulation speed by using dynamic translation. arch=(i686 x86_64) license=('GPL2' 'LGPL2.1') @@ -14,11 +14,13 @@ provides=('qemu') replaces=('kvm') source=(http://downloads.sourceforge.net/kvm/${pkgname}-${pkgver}.tar.gz -65-kvm.rules) +65-kvm.rules +block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff) build() { cd ${srcdir}/${pkgname}-${pkgver} +patch -p1 -i ${srcdir}/block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff || return 1 # fix esound building ./configure --prefix=/usr \ --audio-drv-list=alsa,sdl,oss,esd \ @@ -38,4 +40,5 @@ ${pkgdir}/lib/udev/rules.d/65-kvm.rules } md5sums=('ab484975004f66fb48cb5589bd9b9dcb' - 'b316a066d2f1bb57d8f5b7ea1d0d1caf') + 'b316a066d2f1bb57d8f5b7ea1d0d1caf' + '3d71cb1c3d7c24e4ee1a6264b6f60dca') Added: block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff === --- block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff (rev 0) +++ block-avoid-creating-too-large-iovecs-in-multiwrite_merge.diff 2010-04-11 11:29:25 UTC (rev 77164) @@ -0,0 +1,49 @@ +From: Christoph Hellwig h...@lst.de +Date: Tue, 26 Jan 2010 13:49:08 + (+0100) +Subject: block: avoid creating too large iovecs in multiwrite_merge +X-Git-Url: http://git.kernel.org/?p=virt%2Fkvm%2Fqemu-kvm.git;a=commitdiff_plain;h=e2a305fb13ff0f5cf6ff80aaa90a5ed5954c + +block: avoid creating too large iovecs in multiwrite_merge + +If we go over the maximum number of iovecs support by syscall we get +back EINVAL from the kernel which translate to I/O errors for the guest. + +Add a MAX_IOV defintion for platforms that don't have it. For now we use +the same 1024 define that's used on Linux and various other platforms, +but until the windows block backend implements some kind of vectored I/O +it doesn't matter. + +Signed-off-by: Christoph Hellwig h...@lst.de +Signed-off-by: Anthony Liguori aligu...@us.ibm.com +--- + +diff --git a/block.c b/block.c +index 9c106a8..1919d19 100644 +--- a/block.c b/block.c +@@ -1691,6 +1691,10 @@ static int multiwrite_merge(BlockDriverState *bs, BlockRequest *reqs, + merge = bs-drv-bdrv_merge_requests(bs, reqs[outidx], reqs[i]); + } + ++if (reqs[outidx].qiov-niov + reqs[i].qiov-niov + 1 IOV_MAX) { ++merge = 0; ++} ++ + if (merge) { + size_t size; + QEMUIOVector *qiov = qemu_mallocz(sizeof(*qiov)); +diff --git a/qemu-common.h b/qemu-common.h +index ae4f23b..b09f717 100644 +--- a/qemu-common.h b/qemu-common.h +@@ -54,6 +54,10 @@ struct iovec { + void *iov_base; + size_t iov_len; + }; ++/* ++ * Use the same value as Linux for now. ++ */ ++#define IOV_MAX 1024 + #else + #include sys/uio.h + #endif