On (Wed) Dec 01 2010 [11:30:58], Paul Brook wrote: > > /* Callback function that's called when the guest sends us data */ > > static void flush_buf(VirtIOSerialPort *port, const uint8_t *buf, size_t > > len) { > > VirtConsole *vcon = DO_UPCAST(VirtConsole, port, port); > > + int ret; > > > > - 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. Amit