From ab5ff6a601957978b42333d2d807dbd25084119b Mon Sep 17 00:00:00 2001 From: Ian Dowse Date: Mon, 3 Jun 2002 12:06:49 +0000 Subject: [PATCH] Call getmntinfo with MNT_NOWAIT to avoid hanging if any NFS servers are down. Avoid trying to send RPCs to the pidXXX@machine names used in the special amd(8) mounts. PR: bin/6183 Submitted by: Petr Lampa --- usr.bin/quota/quota.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/usr.bin/quota/quota.c b/usr.bin/quota/quota.c index 046179ecbca0..342bdad38df5 100644 --- a/usr.bin/quota/quota.c +++ b/usr.bin/quota/quota.c @@ -449,7 +449,7 @@ getprivs(long id, int quotatype) qup = quphead = (struct quotause *)0; - nfst = getmntinfo(&fst, MNT_WAIT); + nfst = getmntinfo(&fst, MNT_NOWAIT); if (nfst == 0) errx(2, "no filesystems mounted!"); setfsent(); @@ -597,6 +597,13 @@ getnfsquota(struct statfs *fst, struct quotause *qup, long id, int quotatype) return (0); } + /* Avoid attempting the RPC for special amd(8) filesystems. */ + if (strncmp(fst->f_mntfromname, "pid", 3) == 0 && + strchr(fst->f_mntfromname, '@') != NULL) { + *cp = ':'; + return (0); + } + gq_args.gqa_pathp = cp + 1; gq_args.gqa_uid = id; if (callaurpc(fst->f_mntfromname, RQUOTAPROG, RQUOTAVERS,