sm-notify: Avoid extra rpcbind queries
authorChuck Lever <chuck.lever@oracle.com>
Mon, 19 Sep 2011 18:20:25 +0000 (14:20 -0400)
committerSteve Dickson <steved@redhat.com>
Tue, 20 Sep 2011 11:33:03 +0000 (07:33 -0400)
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>
utils/statd/sm-notify.c

index aa202d3..690ec2a 100644 (file)
@@ -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;