Index: /trunk/server/common/patches/openafs-linux-3.17.patch
===================================================================
--- /trunk/server/common/patches/openafs-linux-3.17.patch	(revision 2639)
+++ /trunk/server/common/patches/openafs-linux-3.17.patch	(revision 2639)
@@ -0,0 +1,130 @@
+From 75f36df74bb3c13aadb047163b93d6c24436f784 Mon Sep 17 00:00:00 2001
+From: Marc Dionne <marc.dionne@your-file-system.com>
+Date: Tue, 9 Sep 2014 10:39:55 -0300
+Subject: [PATCH 1/2] Linux 3.17: No more typedef for ctl_table
+
+The typedef has been removed so we need to use the structure
+directly.
+
+Note that the API for register_sysctl_table has also changed
+with 3.17, but it reverted back to a form that existed
+before and the configure tests handle it correctly.
+
+Reviewed-on: http://gerrit.openafs.org/11455
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Perry Ruiter <pruiter@sinenomine.net>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: D Brashear <shadow@your-file-system.com>
+(cherry picked from commit 6a23ca5b6e8bcaf881be7a4c50bfba72d001e6cd)
+
+Change-Id: Ifb8fc0b9b01d2578c65407608f0e1b3f3b254459
+Reviewed-on: http://gerrit.openafs.org/11549
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+---
+ src/afs/LINUX/osi_sysctl.c | 4 ++--
+ src/cf/linux-test4.m4      | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/afs/LINUX/osi_sysctl.c b/src/afs/LINUX/osi_sysctl.c
+index a8f7fac..834e8ad 100644
+--- a/src/afs/LINUX/osi_sysctl.c
++++ b/src/afs/LINUX/osi_sysctl.c
+@@ -34,7 +34,7 @@ extern afs_int32 afs_pct2;
+ #ifdef CONFIG_SYSCTL
+ static struct ctl_table_header *afs_sysctl = NULL;
+ 
+-static ctl_table afs_sysctl_table[] = {
++static struct ctl_table afs_sysctl_table[] = {
+     {
+ #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
+ #if defined(CTL_UNNUMBERED)
+@@ -234,7 +234,7 @@ static ctl_table afs_sysctl_table[] = {
+     {0}
+ };
+ 
+-static ctl_table fs_sysctl_table[] = {
++static struct ctl_table fs_sysctl_table[] = {
+     {
+ #if defined(STRUCT_CTL_TABLE_HAS_CTL_NAME)
+ #if defined(CTL_UNNUMBERED)
+diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4
+index b068af5..1759d9e 100644
+--- a/src/cf/linux-test4.m4
++++ b/src/cf/linux-test4.m4
+@@ -395,7 +395,7 @@ AC_DEFUN([LINUX_REGISTER_SYSCTL_TABLE_NOFLAG], [
+   AC_CHECK_LINUX_BUILD([whether register_sysctl_table has an insert_at_head argument],
+ 		       [ac_cv_linux_register_sysctl_table_noflag],
+ 		       [#include <linux/sysctl.h>],
+-		       [ctl_table *t; register_sysctl_table (t);],
++		       [struct ctl_table *t; register_sysctl_table (t);],
+ 		       [REGISTER_SYSCTL_TABLE_NOFLAG],
+ 		       [define if register_sysctl_table has no insert_at head flag],
+ 		       [])
+-- 
+2.2.0.rc1
+
+From 663bdfcb16ab742ef12acca110f279b749f15586 Mon Sep 17 00:00:00 2001
+From: Marc Dionne <marc.dionne@your-file-system.com>
+Date: Thu, 25 Sep 2014 07:52:12 -0300
+Subject: [PATCH 2/2] Linux 3.17: Deal with d_splice_alias errors
+
+In 3.17 the logic in d_splice_alias has changed.  Of interest to
+us is the fact that it will now return an EIO error if it finds
+an existing connected directory for the dentry, where it would
+previously have added a new alias for it.  As a result the end
+user can get EIO errors when accessing any file in a volume
+if the volume was first accessed through a different path (ex:
+RO path vs RW path).
+
+This commit just restores the old behaviour, adding the directory
+alias manually in the error case, which is what older versions
+of d_splice_alias used to do.
+
+Reviewed-on: http://gerrit.openafs.org/11492
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Perry Ruiter <pruiter@sinenomine.net>
+Reviewed-by: Andrew Deason <adeason@sinenomine.net>
+Reviewed-by: D Brashear <shadow@your-file-system.com>
+(cherry picked from commit 5815ee92a41cdcf105741d834042a5617dc4c219)
+
+Change-Id: Ie86009ede93255c85fcf640af14c598fe1e42ca9
+Reviewed-on: http://gerrit.openafs.org/11550
+Tested-by: BuildBot <buildbot@rampaginggeek.com>
+Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
+Reviewed-by: Stephan Wiesand <stephan.wiesand@desy.de>
+---
+ src/afs/LINUX/osi_vnodeops.c | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
+index 7e5cdd1..3ddcf42 100644
+--- a/src/afs/LINUX/osi_vnodeops.c
++++ b/src/afs/LINUX/osi_vnodeops.c
+@@ -1529,9 +1529,18 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp)
+     /* It's ok for the file to not be found. That's noted by the caller by
+      * seeing that the dp->d_inode field is NULL.
+      */
+-    if (!code || code == ENOENT)
+-	return newdp;
+-    else 
++    if (!code || code == ENOENT) {
++	/*
++	 * d_splice_alias can return an error (EIO) if there is an existing
++	 * connected directory alias for this dentry.
++	 */
++	if (!IS_ERR(newdp))
++	    return newdp;
++	else {
++	    d_add(dp, ip);
++	    return NULL;
++	}
++    } else
+ 	return ERR_PTR(afs_convert_code(code));
+ }
+ 
+-- 
+2.2.0.rc1
+
Index: /trunk/server/fedora/specs/openafs.spec.patch
===================================================================
--- /trunk/server/fedora/specs/openafs.spec.patch	(revision 2638)
+++ /trunk/server/fedora/specs/openafs.spec.patch	(revision 2639)
@@ -10,5 +10,5 @@
  %{!?fedorakmod: %define fedorakmod 1}
  %{!?build_dkmspkg: %define build_dkmspkg 1}
-@@ -249,9 +249,17 @@
+@@ -249,9 +249,18 @@
  %if %{build_modules}
  BuildRequires: kernel-devel
@@ -23,4 +23,5 @@
 +Patch1004: openafs-afs_lookup-return.patch
 +Patch1005: openafs-d_revalidate-mtpt.patch
++Patch1006: openafs-linux-3.17.patch
 +%define _default_patch_fuzz 2
 +
@@ -93,5 +94,5 @@
  %else
  
-@@ -698,6 +712,13 @@
+@@ -698,6 +712,14 @@
  #%setup -q -n %{srcdir}
  %setup -q -b 1 -n %{srcdir}
@@ -102,5 +103,6 @@
 +%patch1003 -p1 -b .systemd-csdb
 +%patch1004 -p1 -b .afs_lookup-return
-+%patch1005 -p1 -b ._revalidate-mtpt
++%patch1005 -p1 -b .d_revalidate-mtpt
++%patch1006 -p1 -b .linux-3.17
 +
  ##############################################################################
