From 54ff4a6a05cd6212996ddbf96730c70b60459140 Mon Sep 17 00:00:00 2001 From: Sean Eric Fagan Date: Thu, 6 Dec 2018 18:21:48 +0000 Subject: [PATCH] Reduce number of DNS queries in mountd. As reported by a FreeNAS user (see https://redmine.ixsystems.com/issues/55728), mountd does more calls to getnameinfo() than it needs to; this changes it to only call it for the RPC calls it needs the name information for. Reported by: Dave Flowers Reviewed by: imp, mav Approved by: mav (mentor) MFC after: 2 weeks Sponsored by: iXsystems Inc Differential Revision: https://reviews.freebsd.org/D18430 --- usr.sbin/mountd/mountd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/usr.sbin/mountd/mountd.c b/usr.sbin/mountd/mountd.c index 1a10e9dc1c60..03a084dec033 100644 --- a/usr.sbin/mountd/mountd.c +++ b/usr.sbin/mountd/mountd.c @@ -1026,8 +1026,13 @@ mntsrv(struct svc_req *rqstp, SVCXPRT *transp) syslog(LOG_ERR, "request from unknown address family"); return; } - lookup_failed = getnameinfo(saddr, saddr->sa_len, host, sizeof host, - NULL, 0, 0); + switch (rqstp->rq_proc) { + case MOUNTPROC_MNT: + case MOUNTPROC_UMNT: + case MOUNTPROC_UMNTALL: + lookup_failed = getnameinfo(saddr, saddr->sa_len, host, + sizeof host, NULL, 0, 0); + } getnameinfo(saddr, saddr->sa_len, numerichost, sizeof numerichost, NULL, 0, NI_NUMERICHOST); switch (rqstp->rq_proc) {