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@xxxxxxxxxx> --- utils/statd/sm-notify.c | 1 + 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; -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html