summaryrefslogtreecommitdiffstats
path: root/net/9p/client.c
diff options
context:
space:
mode:
authorVenkateswararao Jujjuri (JV) <jvrao@linux.vnet.ibm.com>2010-09-30 03:33:41 +0200
committerEric Van Hensbergen <ericvh@gmail.com>2010-10-28 16:08:48 +0200
commit52f44e0d08ff1a065bf06615483c608163575cb1 (patch)
tree44292212cecafac6ed870812b882b9af545bdaa6 /net/9p/client.c
parent[net/9p]Serialize virtqueue operations to make VirtIO transport SMP safe. (diff)
downloadlinux-52f44e0d08ff1a065bf06615483c608163575cb1.tar.xz
linux-52f44e0d08ff1a065bf06615483c608163575cb1.zip
net/9p: Add waitq to VirtIO transport.
If there is not enough space for the PDU on the VirtIO ring, current code returns -EIO propagating the error to user. This patch introduced a wqit_queue on the channel, and lets the process wait on this queue until VirtIO ring frees up. Signed-off-by: Venkateswararao Jujjuri <jvrao@linux.vnet.ibm.com> Signed-off-by: Eric Van Hensbergen <ericvh@gmail.com>
Diffstat (limited to 'net/9p/client.c')
-rw-r--r--net/9p/client.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/9p/client.c b/net/9p/client.c
index 2bc99e9031e7..bc7b03537699 100644
--- a/net/9p/client.c
+++ b/net/9p/client.c
@@ -583,7 +583,8 @@ p9_client_rpc(struct p9_client *c, int8_t type, const char *fmt, ...)
err = c->trans_mod->request(c, req);
if (err < 0) {
- c->status = Disconnected;
+ if (err != -ERESTARTSYS)
+ c->status = Disconnected;
goto reterr;
}