public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: Chuck Lever <chuck.lever@oracle.com>
To: steved@redhat.com
Cc: linux-nfs@vger.kernel.org
Subject: [PATCH 12/31] mount.nfs: Add more debugging output around nfs_getport()
Date: Mon, 29 Jun 2009 13:36:41 -0400	[thread overview]
Message-ID: <20090629173641.2076.75316.stgit@matisse.1015granger.net> (raw)
In-Reply-To: <20090629172704.2076.45402.stgit-RytpoXr2tKZ9HhUboXbp9zCvJB+x5qRC@public.gmane.org>

So we can see how rpcbind queries are failing during mount processing,
add some debugging messages (enabled with "mount.nfs -v") around the
nfs_getport() calls.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---

 utils/mount/network.c |   28 ++++++++++++++++++++++++----
 1 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/utils/mount/network.c b/utils/mount/network.c
index 3080378..9661995 100644
--- a/utils/mount/network.c
+++ b/utils/mount/network.c
@@ -509,6 +509,21 @@ static void nfs_pp_debug(const struct sockaddr *sap, const socklen_t salen,
 			port);
 }
 
+static void nfs_pp_debug2(const char *str)
+{
+	if (!verbose)
+		return;
+
+	if (rpc_createerr.cf_error.re_status == RPC_CANTRECV ||
+	    rpc_createerr.cf_error.re_status == RPC_CANTSEND)
+		nfs_error(_("%s: portmap query %s%s - %s"),
+				progname, str, clnt_spcreateerror(""),
+				strerror(rpc_createerr.cf_error.re_errno));
+	else
+		nfs_error(_("%s: portmap query %s%s"),
+				progname, str, clnt_spcreateerror(""));
+}
+
 /*
  * Use the portmapper to discover whether or not the service we want is
  * available. The lists 'versions' and 'protos' define ordered sequences
@@ -540,6 +555,9 @@ static int nfs_probe_port(const struct sockaddr *sap, const socklen_t salen,
 	p_vers = vers ? &vers : versions;
 
 	for (;;) {
+		if (verbose)
+			printf(_("%s: prog %lu, trying vers=%lu, prot=%u\n"),
+				progname, prog, *p_vers, *p_prot);
 		p_port = nfs_getport(saddr, salen, prog, *p_vers, *p_prot);
 		if (p_port) {
 			if (!port || port == p_port) {
@@ -555,22 +573,24 @@ static int nfs_probe_port(const struct sockaddr *sap, const socklen_t salen,
 		    rpc_createerr.cf_stat != RPC_TIMEDOUT &&
 		    rpc_createerr.cf_stat != RPC_CANTRECV &&
 		    rpc_createerr.cf_stat != RPC_PROGVERSMISMATCH)
-			goto out_bad;
+			break;
 
 		if (!prot) {
-			if (*++p_prot)
+			if (*++p_prot) {
+				nfs_pp_debug2("retrying");
 				continue;
+			}
 			p_prot = protos;
 		}
 		if (rpc_createerr.cf_stat == RPC_TIMEDOUT ||
 		    rpc_createerr.cf_stat == RPC_CANTRECV)
-			goto out_bad;
+			break;
 
 		if (vers || !*++p_vers)
 			break;
 	}
 
-out_bad:
+	nfs_pp_debug2("failed");
 	return 0;
 
 out_ok:


  parent reply	other threads:[~2009-06-29 17:37 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-29 17:34 [PATCH 00/31] mount.nfs patches for next nfs-utils release Chuck Lever
     [not found] ` <20090629172704.2076.45402.stgit-RytpoXr2tKZ9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2009-06-29 17:34   ` [PATCH 01/31] getport: RPCB_GETADDR r_owner should be an empty string Chuck Lever
2009-06-29 17:35   ` [PATCH 02/31] getport: RPCB_GETADDR's r_addr should contain rpcbind port, not zero Chuck Lever
2009-06-29 17:35   ` [PATCH 03/31] getport: Remove AI_ADDRCONFIG from nfs_gp_loopback_address() Chuck Lever
2009-06-29 17:35   ` [PATCH 04/31] getport: replace getnameinfo(NI_NUMERICHOST) with inet_ntop(3) Chuck Lever
2009-06-29 17:35   ` [PATCH 05/31] getport: Remove unneeded @salen arguments Chuck Lever
2009-06-29 17:35   ` [PATCH 06/31] New versions of libtool add extra aclocal scripts Chuck Lever
2009-06-29 17:35   ` [PATCH 07/31] support: Use HAVE_LIBTIRPC to switch in bindresvport_sa(3t) Chuck Lever
2009-06-29 17:36   ` [PATCH 08/31] support: Don't return RPC_UNKNOWNHOST from rpc_socket.c Chuck Lever
2009-06-29 17:36   ` [PATCH 09/31] support: Set proper retransmit timeout for datagram transports Chuck Lever
2009-06-29 17:36   ` [PATCH 10/31] getport: RPC_PROGNOTREGISTERED is a permanent error Chuck Lever
2009-06-29 17:36   ` [PATCH 11/31] getport: Clear shared error fields before trying rpcbind queries Chuck Lever
2009-06-29 17:36   ` Chuck Lever [this message]
2009-06-29 17:36   ` [PATCH 13/31] getport: Restore historical TCP connect timeout error code Chuck Lever
2009-06-29 17:37   ` [PATCH 14/31] getport: Convert TCP connection refused to RPC_CANTRECV Chuck Lever
2009-06-29 17:37   ` [PATCH 15/31] mount.nfs: If port= specifies an unregistered port, retry, then fail Chuck Lever
2009-06-29 17:37   ` [PATCH 16/31] mount.nfs: force rpcbind queries if options aren't specified Chuck Lever
2009-06-29 17:37   ` [PATCH 17/31] mount.nfs: make nfs_options2pmap return errors Chuck Lever
2009-06-29 17:37   ` [PATCH 18/31] mount.nfs: rearchitect mount version/protocol negotiation logic Chuck Lever
2009-06-29 17:37   ` [PATCH 19/31] mount.nfs: Clean up nfs_is_permanent_error() Chuck Lever
2009-06-29 17:37   ` [PATCH 20/31] mount.nfs: Clean up after restructuring version/protocol negotiation Chuck Lever
2009-06-29 17:38   ` [PATCH 21/31] mount.nfs: Don't update extra_opts after text-based negotiation Chuck Lever
2009-06-29 17:38   ` [PATCH 22/31] support: Introduce sockaddr helpers to get and set IP port numbers Chuck Lever
2009-06-29 17:38   ` [PATCH 23/31] mount.nfs: Use correct data type in discover_nfs_mount_data_version() Chuck Lever
2009-06-29 17:38   ` [PATCH 24/31] mount.nfs: Remove unused parameter in try_mount() Chuck Lever
2009-06-29 17:38   ` [PATCH 25/31] mount.nfs: Fix some nfs_error() nits in network.c Chuck Lever
2009-06-29 17:39   ` [PATCH 26/31] mount.nfs: Remove unused @salen parameter from nfs_ca_gai() Chuck Lever
2009-06-29 17:39   ` [PATCH 27/31] mount.nfs: remove unused @addrlen argument from nfs_string_to_sockaddr() Chuck Lever
2009-06-29 17:39   ` [PATCH 28/31] umount.nfs: Use correct data type in nfsumount() Chuck Lever
2009-06-29 17:39   ` [PATCH 29/31] mount.nfs: Fix compiler warning in stropts.c Chuck Lever
2009-06-29 17:39   ` [PATCH 30/31] mount.nfs: Squelch unused parameter warnings on empty functions Chuck Lever
2009-06-29 17:39   ` [PATCH 31/31] mount.nfs: Squelch compiler warnings in nfs_strerror() Chuck Lever
2009-07-15 13:50   ` [PATCH 00/31] mount.nfs patches for next nfs-utils release Steve Dickson

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=20090629173641.2076.75316.stgit@matisse.1015granger.net \
    --to=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=steved@redhat.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox