[pnfs] [PATCH 8/8] Added check for call/reply flag to xs_tcp_read_request()
iyer at netapp.com
iyer at netapp.com
Thu Apr 12 06:19:17 EDT 2007
From: Rahul Iyer <iyer at netapp.com>
Added a check for the call/reply header to xs_tcp_read_request(). This check
will eventually be used to deal with callbacks coming in on the connection.
Signed-off-by: Rahul Iyer <iyer at netapp.com>
---
net/sunrpc/xprtsock.c | 20 ++++++++++++++------
1 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index 61cf741..a2083dc 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -686,15 +686,23 @@ static inline void xs_tcp_read_request(struct rpc_xprt *xprt, skb_reader_t *desc
/* Find and lock the request corresponding to this xid */
spin_lock(&xprt->transport_lock);
- req = xprt_lookup_rqst(xprt, xprt->tcp_xid);
- if (!req) {
- xprt->tcp_flags &= ~XPRT_COPY_DATA;
- dprintk("RPC: XID %08x request not found!\n",
- ntohl(xprt->tcp_xid));
+ if (xprt->tcp_calldir == RPC_CALL) {
+ dprintk("Callback received on backchannel!\n");
spin_unlock(&xprt->transport_lock);
+
+ /* Ignore callbacks for now */
return;
}
-
+ else {
+ req = xprt_lookup_rqst(xprt, xprt->tcp_xid);
+ if (!req) {
+ xprt->tcp_flags &= ~XPRT_COPY_DATA;
+ dprintk("RPC: XID %08x request not found!\n",
+ ntohl(xprt->tcp_xid));
+ spin_unlock(&xprt->transport_lock);
+ return;
+ }
+ }
rcvbuf = &req->rq_private_buf;
len = desc->count;
if (len > xprt->tcp_reclen - xprt->tcp_offset) {
--
1.5.0.2
More information about the pNFS
mailing list