Am 20.11.2011 00:16, schrieb Frank Laub: > When running the VDE backend with 2 uml instances and running iperf > between them, the vde_send() function often returns EINTR. I noticed > that this is accounted for in net_user.c via the use of the > CATCH_EINTR() macro. Thus the following patch uses the same approach for > calls into VDE. It could be argued that the VDE library itself should > handle EINTR, but this patch will work with older (or current) versions > of VDE. This patch was created against 3.0.3.
Please add a Signed-off-by tag, so that I can give you the credit. :-) See: http://linux.yyz.us/patch-format.html > --- a/arch/um/drivers/vde_user.c > +++ b/arch/um/drivers/vde_user.c > @@ -11,6 +11,7 @@ > #include "um_malloc.h" > #include "user.h" > #include "vde.h" > +#include "os.h" > > static int vde_user_init(void *data, void *dev) > { > @@ -103,7 +104,7 @@ int vde_user_read(void *conn, void *buf, > if (vconn == NULL) > return 0; > > - rv = vde_recv(vconn, buf, len, 0); > + CATCH_EINTR(rv = vde_recv(vconn, buf, len, 0)); > if (rv < 0) { > if (errno == EAGAIN) > return 0; > @@ -118,10 +119,19 @@ int vde_user_read(void *conn, void *buf, > int vde_user_write(void *conn, void *buf, int len) > { > VDECONN *vconn = conn; > + int rv; > > if (vconn == NULL) > return 0; > > - return vde_send(vconn, buf, len, 0); Is the additional if-branch really needed? > + CATCH_EINTR(rv = vde_send(vconn, buf, len, 0)); > + if (rv < 0) { > + if (errno == EAGAIN) > + return 0; > + return -errno; > + } > + else if (rv == 0) > + return -ENOTCONN; > + return rv; > } > Thanks, //richard ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ User-mode-linux-devel mailing list User-mode-linux-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel