aboutsummaryrefslogtreecommitdiffstats
path: root/main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch
diff options
context:
space:
mode:
Diffstat (limited to 'main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch')
-rw-r--r--main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch135
1 files changed, 0 insertions, 135 deletions
diff --git a/main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch b/main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch
deleted file mode 100644
index 8cd1e3b474..0000000000
--- a/main/nfs-utils/0004-nfsexport-talk-to-kernel-using-file-descriptors-inst.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From 9be231f2dde111d4841549140c7fd7aa2c6f3b9e Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Thu, 2 Oct 2014 16:17:30 +0300
-Subject: [PATCH v2 4/5] nfsexport: talk to kernel using file descriptors
- instead of FILE
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
----
- support/nfs/nfsexport.c | 77 ++++++++++++++++++++++++++++---------------------
- 1 file changed, 44 insertions(+), 33 deletions(-)
-
-diff --git a/support/nfs/nfsexport.c b/support/nfs/nfsexport.c
-index f129fd2..afd7c90 100644
---- a/support/nfs/nfsexport.c
-+++ b/support/nfs/nfsexport.c
-@@ -18,6 +18,7 @@
- #include <fcntl.h>
-
- #include "nfslib.h"
-+#include "misc.h"
-
- /* if /proc/net/rpc/... exists, then
- * write to it, as that interface is more stable.
-@@ -32,62 +33,72 @@
- static int
- exp_unexp(struct nfsctl_export *exp, int export)
- {
-- FILE *f;
-+ char buf[RPC_CHAN_BUF_SIZE], *bp;
- struct stat stb;
- __u32 fsid;
- char fsidstr[8];
- __u16 dev;
- __u32 inode;
-- int err;
-+ int err = 0, f, blen;
-
-+ f = open("/proc/net/rpc/nfsd.export/channel", O_WRONLY);
-+ if (f < 0) return -1;
-
-- f = fopen("/proc/net/rpc/nfsd.export/channel", "w");
-- if (f == NULL) return -1;
-- qword_print(f, exp->ex_client);
-- qword_print(f, exp->ex_path);
-+ bp = buf; blen = sizeof(buf);
-+ qword_add(&bp, &blen, exp->ex_client);
-+ qword_add(&bp, &blen, exp->ex_path);
- if (export) {
-- qword_printint(f, 0x7fffffff);
-- qword_printint(f, exp->ex_flags);
-- qword_printint(f, exp->ex_anon_uid);
-- qword_printint(f, exp->ex_anon_gid);
-- qword_printint(f, exp->ex_dev);
-+ qword_addint(&bp, &blen, 0x7fffffff);
-+ qword_addint(&bp, &blen, exp->ex_flags);
-+ qword_addint(&bp, &blen, exp->ex_anon_uid);
-+ qword_addint(&bp, &blen, exp->ex_anon_gid);
-+ qword_addint(&bp, &blen, exp->ex_dev);
- } else
-- qword_printint(f, 1);
--
-- err = qword_eol(f);
-- fclose(f);
-+ qword_addint(&bp, &blen, 1);
-+ qword_addeol(&bp, &blen);
-+ if (blen <= 0 || write(f, buf, bp - buf) != bp - buf)
-+ err = -1;
-+ close(f);
-
- if (stat(exp->ex_path, &stb) != 0)
- return -1;
-- f = fopen("/proc/net/rpc/nfsd.fh/channel", "w");
-- if (f==NULL) return -1;
-+
-+ f = open("/proc/net/rpc/nfsd.fh/channel", O_WRONLY);
-+ if (f < 0) return -1;
- if (exp->ex_flags & NFSEXP_FSID) {
-- qword_print(f,exp->ex_client);
-- qword_printint(f,1);
-+ bp = buf; blen = sizeof(buf);
-+ qword_add(&bp, &blen, exp->ex_client);
-+ qword_addint(&bp, &blen, 1);
- fsid = exp->ex_dev;
-- qword_printhex(f, (char*)&fsid, 4);
-+ qword_addhex(&bp, &blen, (char*)&fsid, 4);
- if (export) {
-- qword_printint(f, 0x7fffffff);
-- qword_print(f, exp->ex_path);
-+ qword_addint(&bp, &blen, 0x7fffffff);
-+ qword_add(&bp, &blen, exp->ex_path);
- } else
-- qword_printint(f, 1);
--
-- err = qword_eol(f) || err;
-+ qword_addint(&bp, &blen, 1);
-+ qword_addeol(&bp, &blen);
-+ if (blen <= 0 || write(f, buf, bp - buf) != bp - buf)
-+ err = -1;
- }
-- qword_print(f,exp->ex_client);
-- qword_printint(f,0);
-+
-+ bp = buf; blen = sizeof(buf);
-+ qword_add(&bp, &blen, exp->ex_client);
-+ qword_addint(&bp, &blen, 0);
- dev = htons(major(stb.st_dev)); memcpy(fsidstr, &dev, 2);
- dev = htons(minor(stb.st_dev)); memcpy(fsidstr+2, &dev, 2);
- inode = stb.st_ino; memcpy(fsidstr+4, &inode, 4);
-
-- qword_printhex(f, fsidstr, 8);
-+ qword_addhex(&bp, &blen, fsidstr, 8);
- if (export) {
-- qword_printint(f, 0x7fffffff);
-- qword_print(f, exp->ex_path);
-+ qword_addint(&bp, &blen, 0x7fffffff);
-+ qword_add(&bp, &blen, exp->ex_path);
- } else
-- qword_printint(f, 1);
-- err = qword_eol(f) || err;
-- fclose(f);
-+ qword_addint(&bp, &blen, 1);
-+ qword_addeol(&bp, &blen);
-+ if (blen <= 0 || write(f, buf, bp - buf) != bp - buf)
-+ err = -1;
-+ close(f);
-+
- return err;
- }
-
---
-2.1.2
-