qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v8 7/7] virtio-console: Enable port throttling w


From: Paul Brook
Subject: Re: [Qemu-devel] [PATCH v8 7/7] virtio-console: Enable port throttling when chardev is slow to consume data
Date: Wed, 1 Dec 2010 11:59:35 +0000
User-agent: KMail/1.13.5 (Linux/2.6.36-trunk-amd64; KDE/4.4.5; x86_64; ; )

> > > -    qemu_chr_write(vcon->chr, buf, len);
> > > +    ret = qemu_chr_write(vcon->chr, buf, len);
> > > +    if (ret == -EAGAIN) {
> > > +        virtio_serial_throttle_port(port, true);
> > > +    }
> > > 
> > >  }
> > 
> > This looks wrong. It will loose data in the case of a partial write
> > (i.e. ret < len)
> 
> That doesn't happen currently (qemu_chr_write doesn't return a value > 0
> but < len).
> 
> I had code in there to handle it, but that would change behaviour for
> current users of qemu_chr_write(), which is a risk.

Doesn't that make the code almost completely pointless?

Allowing EAGAIN without allowing short writes means that the writes will still 
block for arbitrarily long periods of time.  You're relying on the kernel 
blocking at the same point the guest happens to split a DMA block. If you're 
transferring any significant quantities of data the chances of that happening 
seem pretty slim.

Paul



reply via email to

[Prev in Thread] Current Thread [Next in Thread]