summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2011-09-19 14:20:25 -0400
committerSteve Dickson <steved@redhat.com>2011-09-20 07:33:03 -0400
commit445082926141a116c9e93f9ccdd81039c5a2841b (patch)
treed78b3a5249310aaea8ab2322ca5915c884fb9d24
parenta96f3700e4c0bb1b0ea92530cc4a48b8577eeb8f (diff)
downloadnfs-utils-445082926141a116c9e93f9ccdd81039c5a2841b.tar.gz
nfs-utils-445082926141a116c9e93f9ccdd81039c5a2841b.tar.xz
nfs-utils-445082926141a116c9e93f9ccdd81039c5a2841b.zip
sm-notify: Avoid extra rpcbind queries
The logic in notify_host() watches the host->retries counter to see if progress is not being made. If progress stalls, notify_host() tries another IP address. This means sm-notify will generate a fresh rpcbind query. After an RPC succeeds, be sure to reset host->retries so sm-notify doesn't start walking down the host's addrinfo list when we _are_ making progress. In the common case, if the host responds, we avoid extra rpcbind queries and send all requests for the host to the same IP address. Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/statd/sm-notify.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/utils/statd/sm-notify.c b/utils/statd/sm-notify.c
index aa202d3..690ec2a 100644
--- a/utils/statd/sm-notify.c
+++ b/utils/statd/sm-notify.c
@@ -699,6 +699,7 @@ smn_defer(struct nsm_host *host)
static void
smn_schedule(struct nsm_host *host)
{
+ host->retries = 0;
host->xid = 0;
host->send_next = time(NULL);
host->timeout = NSM_TIMEOUT;