Skip to contentSkip to conversation

knfsd: remove nfsrdma defer and revisit code

RFC PATCH New Greg Banks 1 participant 1 message May 23, 2007

Subsystems (3)
lore
Share & tools
lore

Greg Banks

author
#0 lore raw

RFC PATCH 3/5 knfsd: remove nfsrdma defer and revisit code

Remove the NFS/RDMA code which handles deferring and revisiting calls. This is redundant now as the generic code handles it.

---

 include/linux/sunrpc/svc_rdma.h |    1 
 net/sunrpc/svc_rdma_marshal.c   |   56 --------------------
 net/sunrpc/svc_rdma_recvfrom.c  |   71 -------------------------
 net/sunrpc/svc_rdma_transport.c |   81 -----------------------------
 4 files changed, 209 deletions(-)
net/sunrpc/svc_rdma_recvfrom.c +0 -71
Index: linux-2.6.16/net/sunrpc/svc_rdma_recvfrom.c
===================================================================
@@ -394,74 +394,6 @@ static int rdma_read_xdr(struct svcxprt_
 	return ret;
 }
 
-static struct svc_deferred_req *
-svc_rdma_deferred_dequeue(struct svc_sock *xprt)
-{
-	struct svc_deferred_req *dr = NULL;
-	spin_lock_bh(&xprt->sk_server->sv_lock);
-	clear_bit(SK_DEFERRED, &xprt->sk_flags);
-	if (!list_empty(&xprt->sk_deferred)) {
-		dr = list_entry(xprt->sk_deferred.next,
-				struct svc_deferred_req,
-				handle.recent);
-		list_del_init(&dr->handle.recent);
-		set_bit(SK_DEFERRED, &xprt->sk_flags);
-	}
-	spin_unlock_bh(&xprt->sk_server->sv_lock);
-	return dr;
-}
-
-static int svc_rdma_deferred_recv(struct svc_rqst *rqstp)
-{
-	struct svc_sock *xprt = rqstp->rq_sock;
-	struct svcxprt_rdma *rdma_xprt = (struct svcxprt_rdma*)xprt;
-	struct svc_rdma_deferred_req *dr =
-		(struct svc_rdma_deferred_req *)rqstp->rq_deferred;
-	void *page_va;
-	int ret;
-	int len;
-
-	page_va = page_address(dr->arg_page);
-	dprintk("svcrdma: satisfying receive from deferred req=%p\n"
-		"\tpage=%p, page va=%p\n\targ_len=%d\n",
-		dr, dr->arg_page, page_va,
-		dr->arg_len);
-	DBG_DUMP_RDMAHDR(__FUNCTION__, page_va);
-
-	/* Rebuild the thread context */
-	rqstp->rq_prot = IPPROTO_MAX;
-	memcpy(&rqstp->rq_addr,
-	       &rdma_xprt->sc_cm_id->route.addr.dst_addr,
-	       sizeof(rqstp->rq_addr));
-	rqstp->rq_addrlen = sizeof(rqstp->rq_addr);
-
-	rqstp->rq_argused = 1;
-	put_page(rqstp->rq_argpages[0]);
-	rqstp->rq_argpages[0] = dr->arg_page;
-	rqstp->rq_arg.head[0].iov_base = page_va;
-	rqstp->rq_arg.head[0].iov_len = dr->arg_len;
-	rqstp->rq_arg.tail[0].iov_base = NULL;
-	rqstp->rq_arg.tail[0].iov_len = 0;
-	rqstp->rq_arg.pages = NULL;
-	rqstp->rq_arg.page_base = 0;
-	rqstp->rq_arg.page_len = 0;
-	rqstp->rq_arg.len = dr->arg_len;
-
-	len = svc_rdma_xdr_decode_deferred_req(rqstp);
-	DBG_DUMP_XDR(__FUNCTION__, &rqstp->rq_arg);
-
-	ret = rqstp->rq_arg.head[0].iov_len
-		+ rqstp->rq_arg.page_len
-		+ rqstp->rq_arg.tail[0].iov_len;
-
-	rqstp->rq_deferred = NULL;
-	kfree(dr);
-
-	clear_bit(SK_BUSY, &xprt->sk_flags);
-	svc_sock_enqueue(xprt);
-	return ret;
-}
-
 /*
  * Set up the rqstp thread context to point to the RQ buffer. If necessary,
  * pull additional data from the client with an RDMA_READ request.
@@ -478,9 +410,6 @@ int svc_rdma_recvfrom(struct svc_rqst *r
 	unsigned long flags;
 
 	dprintk("svcrdma: rqstp=%p\n", rqstp);
-	if (unlikely(test_bit(SK_DEFERRED, &xprt->sk_flags)))
-		if ((rqstp->rq_deferred = svc_rdma_deferred_dequeue(xprt)))
-			return svc_rdma_deferred_recv(rqstp);
 
  poll_dto_q:
 	/*
net/sunrpc/svc_rdma_transport.c +0 -81

90 lines not on this page · raw message

include/linux/sunrpc/svc_rdma.h +0 -1
Index: linux-2.6.16/include/linux/sunrpc/svc_rdma.h
===================================================================
@@ -140,7 +140,6 @@ struct svcxprt_rdma {
 /* svc_rdma_marshal.c */
 extern void svc_rdma_rcl_chunk_counts(struct rpcrdma_read_chunk *, int *, int *);
 extern int svc_rdma_xdr_decode_req(struct rpcrdma_msg**, struct svc_rqst *);
-extern int svc_rdma_xdr_decode_deferred_req(struct svc_rqst *);
 extern int svc_rdma_xdr_encode_error(struct svcxprt_rdma*, struct rpcrdma_msg*,
 				     enum rpcrdma_errcode, u32*);
 extern void svc_rdma_xdr_encode_write_list(struct rpcrdma_msg *, int);
net/sunrpc/svc_rdma_marshal.c +0 -56

62 lines not on this page · raw message

Signature · 12 lines
Greg Banks, R&D Software Engineer, SGI Australian Software Group.
Apparently, I'm Bedevere.  Which MPHG character are you?
I don't speak for SGI.

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
NFS maillist  -  [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs