diff options
author | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2014-01-26 18:00:58 -0200 |
---|---|---|
committer | André Fabian Silva Delgado <emulatorman@parabola.nu> | 2014-01-26 18:00:58 -0200 |
commit | 62dfb2299e664fbe3e9ab0c051cfdedd5ef032ed (patch) | |
tree | 388102c006c9ff2d77e53de5f2fec135f29c555e /libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch | |
parent | d833c1e6ff43729957fb2f207f34a2db4e3615f7 (diff) | |
download | abslibre-62dfb2299e664fbe3e9ab0c051cfdedd5ef032ed.tar.gz abslibre-62dfb2299e664fbe3e9ab0c051cfdedd5ef032ed.tar.bz2 abslibre-62dfb2299e664fbe3e9ab0c051cfdedd5ef032ed.zip |
linux-libre-3.13-1: updating version
* reenable ALIX support
* update patches and PKGBUILD
* move preparation to prepare()
* remove stuff from /usr/src, use /usr/lib/modules/$version/build instead
* some PKGBUILD fixes
* restore another option that got lost => CONFIG_MEM_SOFT_DIRTY
* don't try to write to $startdir
* fix broken symbols - this allows us to boot on i686 again!
* add warning about missing keyboard support
Diffstat (limited to 'libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch')
-rw-r--r-- | libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch b/libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch new file mode 100644 index 000000000..8ef6fe25c --- /dev/null +++ b/libre-testing/linux-libre/0005-sunrpc-add-an-info-file-for-the-dummy-gssd-pipe.patch @@ -0,0 +1,100 @@ +From e2f0c83a9de331d9352185ca3642616c13127539 Mon Sep 17 00:00:00 2001 +From: Jeff Layton <jlayton@redhat.com> +Date: Thu, 5 Dec 2013 07:34:44 -0500 +Subject: [PATCH 5/6] sunrpc: add an "info" file for the dummy gssd pipe + +rpc.gssd expects to see an "info" file in each clntXX dir. Since adding +the dummy gssd pipe, users that run rpc.gssd see a lot of these messages +spamming the logs: + + rpc.gssd[508]: ERROR: can't open /var/lib/nfs/rpc_pipefs/gssd/clntXX/info: No such file or directory + rpc.gssd[508]: ERROR: failed to read service info + +Add a dummy gssd/clntXX/info file to help silence these messages. + +Signed-off-by: Jeff Layton <jlayton@redhat.com> +Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com> +--- + net/sunrpc/rpc_pipe.c | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 49 insertions(+), 1 deletion(-) + +diff --git a/net/sunrpc/rpc_pipe.c b/net/sunrpc/rpc_pipe.c +index 0b74c61..5d973b2 100644 +--- a/net/sunrpc/rpc_pipe.c ++++ b/net/sunrpc/rpc_pipe.c +@@ -17,6 +17,7 @@ + #include <linux/fsnotify.h> + #include <linux/kernel.h> + #include <linux/rcupdate.h> ++#include <linux/utsname.h> + + #include <asm/ioctls.h> + #include <linux/poll.h> +@@ -1275,6 +1276,44 @@ static const struct rpc_pipe_ops gssd_dummy_pipe_ops = { + .downcall = dummy_downcall, + }; + ++/* ++ * Here we present a bogus "info" file to keep rpc.gssd happy. We don't expect ++ * that it will ever use this info to handle an upcall, but rpc.gssd expects ++ * that this file will be there and have a certain format. ++ */ ++static int ++rpc_show_dummy_info(struct seq_file *m, void *v) ++{ ++ seq_printf(m, "RPC server: %s\n", utsname()->nodename); ++ seq_printf(m, "service: foo (1) version 0\n"); ++ seq_printf(m, "address: 127.0.0.1\n"); ++ seq_printf(m, "protocol: tcp\n"); ++ seq_printf(m, "port: 0\n"); ++ return 0; ++} ++ ++static int ++rpc_dummy_info_open(struct inode *inode, struct file *file) ++{ ++ return single_open(file, rpc_show_dummy_info, NULL); ++} ++ ++static const struct file_operations rpc_dummy_info_operations = { ++ .owner = THIS_MODULE, ++ .open = rpc_dummy_info_open, ++ .read = seq_read, ++ .llseek = seq_lseek, ++ .release = single_release, ++}; ++ ++static const struct rpc_filelist gssd_dummy_info_file[] = { ++ [0] = { ++ .name = "info", ++ .i_fop = &rpc_dummy_info_operations, ++ .mode = S_IFREG | S_IRUSR, ++ }, ++}; ++ + /** + * rpc_gssd_dummy_populate - create a dummy gssd pipe + * @root: root of the rpc_pipefs filesystem +@@ -1312,9 +1351,18 @@ rpc_gssd_dummy_populate(struct dentry *root, struct rpc_pipe *pipe_data) + goto out; + } + ++ ret = rpc_populate(clnt_dentry, gssd_dummy_info_file, 0, 1, NULL); ++ if (ret) { ++ __rpc_depopulate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1); ++ pipe_dentry = ERR_PTR(ret); ++ goto out; ++ } ++ + pipe_dentry = rpc_mkpipe_dentry(clnt_dentry, "gssd", NULL, pipe_data); +- if (IS_ERR(pipe_dentry)) ++ if (IS_ERR(pipe_dentry)) { ++ __rpc_depopulate(clnt_dentry, gssd_dummy_info_file, 0, 1); + __rpc_depopulate(gssd_dentry, gssd_dummy_clnt_dir, 0, 1); ++ } + out: + dput(clnt_dentry); + dput(gssd_dentry); +-- +1.8.5.3 + |