|
From: | Anthony Liguori |
Subject: | Re: [Qemu-devel] [PATCH] block: prevent multiwrite_merge from creating too large iovecs |
Date: | Wed, 20 Jan 2010 08:56:23 -0600 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.5) Gecko/20091209 Fedora/3.0-4.fc12 Lightning/1.0pre Thunderbird/3.0 |
On 01/19/2010 03:15 PM, Christoph Hellwig wrote:
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. Signed-off-by: Christoph Hellwig<address@hidden>
Applied. Thanks. Regards, Anthony Liguori
Index: qemu/block.c =================================================================== --- qemu.orig/block.c 2010-01-19 22:10:19.797003226 +0100 +++ qemu/block.c 2010-01-19 22:11:08.226005767 +0100 @@ -1711,6 +1711,10 @@ static int multiwrite_merge(BlockDriverS 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));
[Prev in Thread] | Current Thread | [Next in Thread] |