All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] block: prevent multiwrite_merge from creating too large iovecs
@ 2010-01-19 21:15 Christoph Hellwig
  2010-01-20 11:37 ` Kevin Wolf
  2010-01-20 14:56 ` Anthony Liguori
  0 siblings, 2 replies; 8+ messages in thread
From: Christoph Hellwig @ 2010-01-19 21:15 UTC (permalink / raw)
  To: qemu-devel

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 <hch@lst.de>

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));

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2010-01-26 13:42 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-19 21:15 [Qemu-devel] [PATCH] block: prevent multiwrite_merge from creating too large iovecs Christoph Hellwig
2010-01-20 11:37 ` Kevin Wolf
2010-01-20 16:24   ` Christoph Hellwig
2010-01-20 16:29     ` Kevin Wolf
2010-01-26  9:21   ` Christoph Hellwig
2010-01-26 13:08     ` Anthony Liguori
2010-01-26 13:42       ` Christoph Hellwig
2010-01-20 14:56 ` Anthony Liguori

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.