>> 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 majord...@freebsd.org
with "unsubscribe freebsd-current" in the body of the message

Reply via email to