diff options
author | Michael Lass | 2015-09-05 17:57:40 +0200 |
---|---|---|
committer | Michael Lass | 2015-09-05 17:58:14 +0200 |
commit | 10ab83c330f25728d193df8de706eb64f501b021 (patch) | |
tree | 65f3ccc9a9b2db60030f5317a8d477357b17048a /0005-Linux-4.2-Changes-in-link-operation-APIs.patch | |
parent | a89d8708c1b4d32d3cddd5a44be5584fcbbe1a88 (diff) | |
download | aur-10ab83c330f25728d193df8de706eb64f501b021.tar.gz |
Add patches for Linux 4.2
Diffstat (limited to '0005-Linux-4.2-Changes-in-link-operation-APIs.patch')
-rw-r--r-- | 0005-Linux-4.2-Changes-in-link-operation-APIs.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/0005-Linux-4.2-Changes-in-link-operation-APIs.patch b/0005-Linux-4.2-Changes-in-link-operation-APIs.patch new file mode 100644 index 000000000000..c2fe8d273e86 --- /dev/null +++ b/0005-Linux-4.2-Changes-in-link-operation-APIs.patch @@ -0,0 +1,116 @@ +From 1c8e07a6e09d25d1f3dc63b4af8f7267eabe34ee Mon Sep 17 00:00:00 2001 +From: Marc Dionne <marc.dionne@your-file-system.com> +Date: Mon, 6 Jul 2015 13:01:38 -0300 +Subject: [PATCH 5/6] Linux 4.2: Changes in link operation APIs + +The follow_link and put_link operations are revised. +Test for the new signature and adapt the code. + +Reviewed-on: http://gerrit.openafs.org/11928 +Tested-by: BuildBot <buildbot@rampaginggeek.com> +Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com> +(cherry picked from commit 6c3ac6dc1ea865153a65b5c5c4f288617a3e6d0f) + +Change-Id: I779fe8a29ec75a5db545b5d370927b810c1165c9 +Reviewed-on: http://gerrit.openafs.org/11951 +Tested-by: BuildBot <buildbot@rampaginggeek.com> +Reviewed-by: Benjamin Kaduk <kaduk@mit.edu> +Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de> +(cherry picked from commit b93da6f3e99735ef2584fb172d028284bb581011) +--- + acinclude.m4 | 10 ++++++++++ + src/afs/LINUX/osi_vnodeops.c | 27 +++++++++++++++++++++++++++ + 2 files changed, 37 insertions(+) + +diff --git a/acinclude.m4 b/acinclude.m4 +index c924d90..e9e84a7f 100644 +--- a/acinclude.m4 ++++ b/acinclude.m4 +@@ -845,6 +845,16 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) + LINUX_KBUILD_USES_EXTRA_CFLAGS + LINUX_KERNEL_COMPILE_WORKS + ++ dnl Operation signature checks ++ AC_CHECK_LINUX_OPERATION([inode_operations], [follow_link], [no_nameidata], ++ [#include <linux/fs.h>], ++ [const char *], ++ [struct dentry *dentry, void **link_data]) ++ AC_CHECK_LINUX_OPERATION([inode_operations], [put_link], [no_nameidata], ++ [#include <linux/fs.h>], ++ [void], ++ [struct inode *inode, void *link_data]) ++ + dnl Check for header files + AC_CHECK_LINUX_HEADER([config.h]) + AC_CHECK_LINUX_HEADER([completion.h]) +diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c +index a878eb4..3c0cb33 100644 +--- a/src/afs/LINUX/osi_vnodeops.c ++++ b/src/afs/LINUX/osi_vnodeops.c +@@ -1896,14 +1896,22 @@ afs_linux_readlink(struct dentry *dp, char *target, int maxlen) + /* afs_linux_follow_link + * a file system dependent link following routine. + */ ++#if defined(HAVE_LINUX_INODE_OPERATIONS_FOLLOW_LINK_NO_NAMEIDATA) ++static const char *afs_linux_follow_link(struct dentry *dentry, void **link_data) ++#else + static int afs_linux_follow_link(struct dentry *dentry, struct nameidata *nd) ++#endif + { + int code; + char *name; + + name = kmalloc(PATH_MAX, GFP_NOFS); + if (!name) { ++#if defined(HAVE_LINUX_INODE_OPERATIONS_FOLLOW_LINK_NO_NAMEIDATA) ++ return ERR_PTR(-EIO); ++#else + return -EIO; ++#endif + } + + AFS_GLOCK(); +@@ -1911,14 +1919,32 @@ static int afs_linux_follow_link(struct dentry *dentry, struct nameidata *nd) + AFS_GUNLOCK(); + + if (code < 0) { ++#if defined(HAVE_LINUX_INODE_OPERATIONS_FOLLOW_LINK_NO_NAMEIDATA) ++ return ERR_PTR(code); ++#else + return code; ++#endif + } + + name[code] = '\0'; ++#if defined(HAVE_LINUX_INODE_OPERATIONS_FOLLOW_LINK_NO_NAMEIDATA) ++ return *link_data = name; ++#else + nd_set_link(nd, name); + return 0; ++#endif + } + ++#if defined(HAVE_LINUX_INODE_OPERATIONS_PUT_LINK_NO_NAMEIDATA) ++static void ++afs_linux_put_link(struct inode *inode, void *link_data) ++{ ++ char *name = link_data; ++ ++ if (name && !IS_ERR(name)) ++ kfree(name); ++} ++#else + static void + afs_linux_put_link(struct dentry *dentry, struct nameidata *nd) + { +@@ -1927,6 +1953,7 @@ afs_linux_put_link(struct dentry *dentry, struct nameidata *nd) + if (name && !IS_ERR(name)) + kfree(name); + } ++#endif /* HAVE_LINUX_INODE_OPERATIONS_PUT_LINK_NO_NAMEIDATA */ + + #endif /* USABLE_KERNEL_PAGE_SYMLINK_CACHE */ + +-- +2.5.1 + |