All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] A question about this commit 9894dc0cdcc397ee5b26370bc53da6d360a363c2
@ 2016-08-23  8:57 Gaohaifeng (A)
  2016-08-25  1:33 ` Daniel P. Berrange
  0 siblings, 1 reply; 4+ messages in thread
From: Gaohaifeng (A) @ 2016-08-23  8:57 UTC (permalink / raw)
  To: berrange, pbonzini, Lilijun (Jerry), zangchuanqiang, qemu devel

Hi Daniel & Paolo,

Commit 9894dc0c "char: convert from GIOChannel to QIOChannel", about

the below code segment:

-static gboolean tcp_chr_read(GIOChannel *chan, GIOCondition cond, void *opaque)
+static gboolean tcp_chr_read(QIOChannel *chan, GIOCondition cond, void *opaque)
{
     CharDriverState *chr = opaque;
     TCPCharDriver *s = chr->opaque;
@@ -2938,9 +2801,7 @@ static gboolean tcp_chr_read(GIOChannel *chan, GIOCondition cond, void *opaque)
     if (len > s->max_size)
         len = s->max_size;
     size = tcp_chr_recv(chr, (void *)buf, len);
-    if (size == 0 ||
-        (size < 0 &&
-         socket_error() != EAGAIN && socket_error() != EWOULDBLOCK)) {
+    if (size == 0 || size == -1) {
         /* connection closed */
         tcp_chr_disconnect(chr);
     } else if (size > 0) {

The old version will not call tcp_chr_disconnect when error is not EAGAIN.
The new version will call tcp_chr_disconnect when size==-1. From the tcp_chr_recv function we see EAGIN will return -1, so EAGIN will call tcp_chr_disconnect.

We meet an issue when Guest VM use DPDK(1.6.0) l2fwd, it may exit since link status is not up. The link is down because tcp_chr_disconnect will set it.

Can you explain it why EAGIN here changes the behavior ?

Thanks,
Haifeng Gao

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

end of thread, other threads:[~2016-08-25 15:52 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-23  8:57 [Qemu-devel] A question about this commit 9894dc0cdcc397ee5b26370bc53da6d360a363c2 Gaohaifeng (A)
2016-08-25  1:33 ` Daniel P. Berrange
2016-08-25 13:21   ` Gaohaifeng (A)
2016-08-25 15:52     ` Daniel P. Berrange

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.