]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/nfssvc.c
Further coverity related cleanups.
[nfs-utils.git] / support / nfs / nfssvc.c
index 7419baf079c00e5b09bb91c556733d3346a35a15..38240a020f190ffbe12c5591752929e1c6baed30 100644 (file)
@@ -6,7 +6,12 @@
  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <unistd.h>
+#include <fcntl.h>
 
 #include "nfslib.h"
 
@@ -14,6 +19,26 @@ int
 nfssvc(int port, int nrservs)
 {
        struct nfsctl_arg       arg;
+       int fd;
+
+       fd = open("/proc/fs/nfsd/threads", O_WRONLY);
+       if (fd < 0)
+               fd = open("/proc/fs/nfs/threads", O_WRONLY);
+       if (fd >= 0) {
+               /* 2.5+ kernel with nfsd filesystem mounted.
+                * Just write the number in.
+                * Cannot handle port number yet, but does anyone care?
+                */
+               char buf[20];
+               int n;
+               snprintf(buf, 20,"%d\n", nrservs);
+               n = write(fd, buf, strlen(buf));
+               close(fd);
+               if (n != strlen(buf))
+                       return -1;
+               else
+                       return 0;
+       }
 
        arg.ca_version = NFSCTL_VERSION;
        arg.ca_svc.svc_nthreads = nrservs;