From owner-freebsd-current Sun Feb 21 4:34: 2 1999 Delivered-To: freebsd-current@freebsd.org Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.26.10.9]) by hub.freebsd.org (Postfix) with ESMTP id 4FAAD11740; Sun, 21 Feb 1999 04:33:36 -0800 (PST) (envelope-from bde@godzilla.zeta.org.au) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.7/8.8.7) id XAA05724; Sun, 21 Feb 1999 23:32:15 +1100 Date: Sun, 21 Feb 1999 23:32:15 +1100 From: Bruce Evans Message-Id: <199902211232.XAA05724@godzilla.zeta.org.au> To: bde@zeta.org.au, dfr@nlsystems.com Subject: Re: Problems with nfsstat and dynamic OID Cc: current@FreeBSD.ORG, dfr@FreeBSD.ORG, romanp@wuppy.rcs.ru Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG >> Now that it is possible to change the sysctl tree at runtime, the changes >> are not actually (completely) made for vfs sysctls. Special code for >> making "impossible" changes for vfs sysctls went away. > >Oh. Thats nasty. I don't want to allocate special oids for 'privileged' >nodes. I think the userland code should use sysctlbyname() instead. >This patch seems to fix it for me: > >Index: nfsstat.c >=================================================================== >RCS file: /home/ncvs/src/usr.bin/nfsstat/nfsstat.c,v >retrieving revision 1.12 >diff -u -r1.12 nfsstat.c >--- nfsstat.c 1998/10/25 10:59:44 1.12 >+++ nfsstat.c 1999/02/21 11:47:08 >@@ -162,16 +162,9 @@ > err(1, "kvm_read"); > } > } else { >- int name[3]; > size_t buflen = sizeof *stp; >- struct vfsconf vfc; > >- if (getvfsbyname("nfs", &vfc) < 0) >- err(1, "getvfsbyname: NFS not compiled into kernel"); >- name[0] = CTL_VFS; >- name[1] = vfc.vfc_typenum; >- name[2] = NFS_NFSSTATS; >- if (sysctl(name, 3, stp, &buflen, (void *)0, (size_t)0) < 0) { >+ if (sysctlbyname("vfs.nfs.nfsstats", stp, &buflen, (void *)0, (size_t)0) < 0) { > err(1, "sysctl"); > } > } The old interface is the standard one (although the above code shows how inconvenient it is). mountd uses it too. Perhaps the sysctl oid could be assigned to the vfs type number instead of vice versa. The type number namespace can already have holes, although it can't be very sparse because getvfsbyname(3) has to do an O(n) search of it. Bruce To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message