summaryrefslogtreecommitdiffstats
path: root/support
diff options
context:
space:
mode:
authorneilbrown <neilbrown>2003-07-03 01:57:11 +0000
committerneilbrown <neilbrown>2003-07-03 01:57:11 +0000
commit1c4fdb00a0cb5208294d745e7491ce58b153606b (patch)
tree05f2c69f32cab2094534b6d4b05015cb9026c470 /support
parentf68785e72129ab643d6c793bd5a11bdf0010eff9 (diff)
downloadnfs-utils-1c4fdb00a0cb5208294d745e7491ce58b153606b.tar.gz
nfs-utils-1c4fdb00a0cb5208294d745e7491ce58b153606b.tar.xz
nfs-utils-1c4fdb00a0cb5208294d745e7491ce58b153606b.zip
rpc.nfsd to write to /proc/fs/nfs/threads if available
Diffstat (limited to 'support')
-rw-r--r--support/nfs/nfssvc.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/support/nfs/nfssvc.c b/support/nfs/nfssvc.c
index 7419baf..dae16f7 100644
--- a/support/nfs/nfssvc.c
+++ b/support/nfs/nfssvc.c
@@ -8,12 +8,33 @@
#include "config.h"
+#include <unistd.h>
+#include <fcntl.h>
+
#include "nfslib.h"
int
nfssvc(int port, int nrservs)
{
struct nfsctl_arg arg;
+ int fd;
+
+ 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;