All of lore.kernel.org
 help / color / mirror / Atom feed
From: andros@netapp.com
To: trond.myklebust@netapp.com
Cc: bfields@redhat.com, linux-nfs@vger.kernel.org,
	Andy Adamson <andros@netapp.com>
Subject: [PATCH_V9 05/12] NFS use svc_create_xprt for NFSv4.1 callback service
Date: Wed,  5 Jan 2011 21:04:28 -0500	[thread overview]
Message-ID: <1294279475-8540-6-git-send-email-andros@netapp.com> (raw)
In-Reply-To: <1294279475-8540-5-git-send-email-andros@netapp.com>

From: Andy Adamson <andros@netapp.com>

The new back channel transport means we call the normal creation routine as
well as svc_xprt_put.

Signed-off-by: Andy Adamson <andros@netapp.com>
---
 fs/nfs/callback.c |   28 ++++++++++++++++++----------
 1 files changed, 18 insertions(+), 10 deletions(-)

diff --git a/fs/nfs/callback.c b/fs/nfs/callback.c
index 93a8b3b..0e9fae8 100644
--- a/fs/nfs/callback.c
+++ b/fs/nfs/callback.c
@@ -177,30 +177,38 @@ nfs41_callback_svc(void *vrqstp)
 struct svc_rqst *
 nfs41_callback_up(struct svc_serv *serv, struct rpc_xprt *xprt)
 {
-	struct svc_xprt *bc_xprt;
-	struct svc_rqst *rqstp = ERR_PTR(-ENOMEM);
+	struct svc_rqst *rqstp;
+	int ret;
 
-	dprintk("--> %s\n", __func__);
-	/* Create a svc_sock for the service */
-	bc_xprt = svc_sock_create(serv, xprt->prot);
-	if (!bc_xprt)
+	/*
+	 * Create an svc_sock for the back channel service that shares the
+	 * fore channel connection.
+	 * Returns the input port (0) and sets the svc_serv bc_xprt on success
+	 */
+	ret = svc_create_xprt(serv, "tcp-bc", &init_net, PF_INET, 0,
+			      SVC_SOCK_ANONYMOUS);
+	if (ret < 0) {
+		rqstp = ERR_PTR(ret);
 		goto out;
+	}
 
 	/*
 	 * Save the svc_serv in the transport so that it can
 	 * be referenced when the session backchannel is initialized
 	 */
-	serv->bc_xprt = bc_xprt;
 	xprt->bc_serv = serv;
 
 	INIT_LIST_HEAD(&serv->sv_cb_list);
 	spin_lock_init(&serv->sv_cb_lock);
 	init_waitqueue_head(&serv->sv_cb_waitq);
 	rqstp = svc_prepare_thread(serv, &serv->sv_pools[0]);
-	if (IS_ERR(rqstp))
-		svc_sock_destroy(bc_xprt);
+	if (IS_ERR(rqstp)) {
+		svc_xprt_put(serv->bc_xprt);
+		serv->bc_xprt = NULL;
+	}
 out:
-	dprintk("--> %s return %p\n", __func__, rqstp);
+	dprintk("--> %s return %ld\n", __func__,
+		IS_ERR(rqstp) ? PTR_ERR(rqstp) : 0);
 	return rqstp;
 }
 
-- 
1.6.6


  reply	other threads:[~2011-01-06  2:05 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-06  2:04 [PATCH_V9 0/12] NFSv4 find client fix Version 9 andros
2011-01-06  2:04 ` [PATCH_V9 01/12] SUNRPC move svc_drop to caller of svc_process_common andros
2011-01-06  2:04   ` [PATCH_V9 02/12] SUNRPC fix bc_send print andros
2011-01-06  2:04     ` [PATCH_V9 03/12] SUNRPC new transport for the NFSv4.1 shared back channel andros
2011-01-06  2:04       ` [PATCH_V9 04/12] SUNRPC register and unregister the back channel transport andros
2011-01-06  2:04         ` andros [this message]
2011-01-06  2:04           ` [PATCH_V9 06/12] NFS do not clear minor version at nfs_client free andros
2011-01-06  2:04             ` [PATCH_V9 07/12] NFS implement v4.0 callback_ident andros
2011-01-06  2:04               ` [PATCH_V9 08/12] NFS associate sessionid with callback connection andros
2011-01-06  2:04                 ` [PATCH_V9 09/12] NFS refactor nfs_find_client and reference client across callback processing andros
2011-01-06  2:04                   ` [PATCH_V9 10/12] NFS RPC_AUTH_GSS unsupported on v4.1 back channel andros
2011-01-06  2:04                     ` [PATCH_V9 11/12] NFS add session back channel draining andros
2011-01-06  2:04                       ` [PATCH_V9 12/12] NFS rename client back channel transport field andros

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1294279475-8540-6-git-send-email-andros@netapp.com \
    --to=andros@netapp.com \
    --cc=bfields@redhat.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=trond.myklebust@netapp.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.