diff -Nru openafs-1.6.10/acinclude.m4 openafs-1.6.11.1/acinclude.m4 --- openafs-1.6.10/acinclude.m4 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/acinclude.m4 2015-04-13 08:00:35.000000000 +0000 @@ -232,6 +232,26 @@ , [enable_linux_syscall_probing="maybe"]) +AC_ARG_ENABLE([linux-d_splice_alias-extra-iput], + [AS_HELP_STRING([--enable-linux-d_splice_alias-extra-iput], + [Linux has introduced an incompatible behavior change in the + d_splice_alias function with no reliable way to determine which + behavior will be produced. If Linux commit + 51486b900ee92856b977eacfc5bfbe6565028070 (or equivalent) has been + applied to your kernel, disable this option. If that commit is + not present in your kernel, enable this option. We apologize + that you are required to know this about your running kernel.])], + [], + [case $system in + *-linux*) + AS_IF([test "x$LOGNAME" != "xbuildslave" && + test "x$LOGNAME" != "xbuildbot"], + [AC_ERROR([Linux users must specify either + --enable-linux-d_splice_alias-extra-iput or + --disable-linux-d_splice_alias-extra-iput])], + [enable_linux_d_splice_alias_extra_iput="no"]) + esac + ]) AC_ARG_WITH([xslt-processor], AS_HELP_STRING([--with-xslt-processor=ARG], [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]), @@ -358,7 +378,7 @@ case "$LINUX_VERSION" in 2.2.*) AFS_SYSKVERS=22 ;; 2.4.*) AFS_SYSKVERS=24 ;; - 2.6.* | 3.*) AFS_SYSKVERS=26 ;; + [2.6.* | [3-9]* | [1-2][0-9]*]) AFS_SYSKVERS=26 ;; *) AC_MSG_ERROR(Couldn't guess your Linux version [2]) ;; esac fi @@ -579,14 +599,22 @@ AFS_SYSNAME="x86_darwin_120" OSXSDK="macosx10.8" ;; - x86_64-apple-darwin13.*) - AFS_SYSNAME="x86_darwin_130" - OSXSDK="macosx10.9" - ;; - i?86-apple-darwin13.*) - AFS_SYSNAME="x86_darwin_130" - OSXSDK="macosx10.9" - ;; + x86_64-apple-darwin13.*) + AFS_SYSNAME="x86_darwin_130" + OSXSDK="macosx10.9" + ;; + i?86-apple-darwin13.*) + AFS_SYSNAME="x86_darwin_130" + OSXSDK="macosx10.9" + ;; + x86_64-apple-darwin14.*) + AFS_SYSNAME="x86_darwin_140" + OSXSDK="macosx10.10" + ;; + i?86-apple-darwin14.*) + AFS_SYSNAME="x86_darwin_140" + OSXSDK="macosx10.10" + ;; sparc-sun-solaris2.5*) AFS_SYSNAME="sun4x_55" enable_login="yes" @@ -772,6 +800,7 @@ *_obsd51) AFS_PARAM_COMMON=param.obsd51.h ;; *_obsd52) AFS_PARAM_COMMON=param.obsd52.h ;; *_obsd53) AFS_PARAM_COMMON=param.obsd53.h ;; + *_obsd54) AFS_PARAM_COMMON=param.obsd54.h ;; *_linux22) AFS_PARAM_COMMON=param.linux22.h ;; *_linux24) AFS_PARAM_COMMON=param.linux24.h ;; *_linux26) AFS_PARAM_COMMON=param.linux26.h ;; @@ -822,26 +851,31 @@ AC_CHECK_LINUX_TYPE([kuid_t], [uidgid.h]) dnl Check for structure elements + AC_CHECK_LINUX_STRUCT([address_space], [backing_dev_info], [fs.h]) AC_CHECK_LINUX_STRUCT([address_space_operations], [write_begin], [fs.h]) AC_CHECK_LINUX_STRUCT([backing_dev_info], [name], [backing-dev.h]) AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h]) AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h]) + AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h]) AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h]) AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h]) AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h]) AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h]) AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h]) AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h]) + AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h]) AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h]) AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h]) AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h]) AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h]) AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h]) AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h]) - AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h]) + AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h]) + AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) + AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h]) AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h]) AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h]) AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h]) @@ -912,6 +946,9 @@ AC_CHECK_LINUX_FUNC([hlist_unhashed], [#include ], [hlist_unhashed(0);]) + AC_CHECK_LINUX_FUNC([ihold], + [#include ], + [ihold(NULL);]) AC_CHECK_LINUX_FUNC([i_size_read], [#include ], [i_size_read(NULL);]) @@ -1024,6 +1061,7 @@ LINUX_IOP_I_CREATE_TAKES_BOOL LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED LINUX_IOP_LOOKUP_TAKES_UNSIGNED + LINUX_D_INVALIDATE_IS_VOID dnl If we are guaranteed that keyrings will work - that is dnl a) The kernel has keyrings enabled @@ -1102,6 +1140,9 @@ fi : fi + if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then + AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use]) + fi dnl Linux-only, but just enable always. AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client]) esac diff -Nru openafs-1.6.10/configure.ac openafs-1.6.11.1/configure.ac --- openafs-1.6.10/configure.ac 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/configure.ac 2015-04-13 08:00:35.000000000 +0000 @@ -5,8 +5,8 @@ AM_INIT_AUTOMAKE AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.6.10 -LINUX_PKGVER=1.6.10 +MACOS_VERSION=1.6.12d1 +LINUX_PKGVER=1.6.11.1 dnl Debian wants the release candidate version in the main upstream version, dnl and wants ~ before it. diff -Nru openafs-1.6.10/configure-libafs.ac openafs-1.6.11.1/configure-libafs.ac --- openafs-1.6.10/configure-libafs.ac 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/configure-libafs.ac 2015-04-13 08:00:35.000000000 +0000 @@ -5,7 +5,7 @@ AM_INIT_AUTOMAKE AC_CONFIG_HEADER(src/config/afsconfig.h) -MACOS_VERSION=1.6.10 +MACOS_VERSION=1.6.12d1 AC_SUBST(MACOS_VERSION) diff -Nru openafs-1.6.10/debian/changelog openafs-1.6.11.1/debian/changelog --- openafs-1.6.10/debian/changelog 2015-02-04 18:35:52.000000000 +0000 +++ openafs-1.6.11.1/debian/changelog 2015-05-15 15:02:26.000000000 +0000 @@ -1,3 +1,33 @@ +openafs (1.6.11.1-1) unstable; urgency=medium + + * New upstream release. + - Support for Linux kernels up to 4.0. + + -- Benjamin Kaduk Fri, 15 May 2015 11:02:14 -0400 + +openafs (1.6.11~pre2-1) experimental; urgency=low + + * New upstream pre-release. + - Avoid using a stale data version in certain cases when writing + files larger than the AFS cache, which manifested as file corruption. + - Fix a refcount leak that could lead to panics. + - Support newer linux versions, up through 3.19. + - Fix some leaks and crashes in error cases. + + -- Benjamin Kaduk Fri, 20 Feb 2015 15:50:49 -0500 + +openafs (1.6.11~pre1-1) experimental; urgency=low + + * New upstream pre-release. + - Linux kernels up to 3.17 are now supported. + - Fix more incorrect behavior in our revalidation of dcache entries. Bugs + in this area can cause stale path lookups in certain situations, as well + as cause getcwd() to fail spuriously. + - Allow aklog to succeed in creating native K5 tokens even when K5-to-K4 + principal conversion fails. + + -- Andrew Deason Sun, 07 Dec 2014 23:43:21 -0600 + openafs (1.6.10-4) unstable; urgency=medium * Update Spanish translation, thanks Javier Fernandez-Sanguino Pena. diff -Nru openafs-1.6.10/debian/patches/0004-Linux-3.17-No-more-typedef-for-ctl_table.patch openafs-1.6.11.1/debian/patches/0004-Linux-3.17-No-more-typedef-for-ctl_table.patch --- openafs-1.6.10/debian/patches/0004-Linux-3.17-No-more-typedef-for-ctl_table.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0004-Linux-3.17-No-more-typedef-for-ctl_table.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -From: Marc Dionne -Date: Tue, 9 Sep 2014 10:39:55 -0300 -Subject: 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 -Tested-by: BuildBot -Reviewed-by: Perry Ruiter -Reviewed-by: Andrew Deason -Reviewed-by: D Brashear -(cherry picked from commit 6a23ca5b6e8bcaf881be7a4c50bfba72d001e6cd) - -Change-Id: Ifb8fc0b9b01d2578c65407608f0e1b3f3b254459 -Reviewed-on: http://gerrit.openafs.org/11549 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Stephan Wiesand -(cherry picked from commit 75f36df74bb3c13aadb047163b93d6c24436f784) ---- - 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 ], -- [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], - []) diff -Nru openafs-1.6.10/debian/patches/0005-Linux-3.17-Deal-with-d_splice_alias-errors.patch openafs-1.6.11.1/debian/patches/0005-Linux-3.17-Deal-with-d_splice_alias-errors.patch --- openafs-1.6.10/debian/patches/0005-Linux-3.17-Deal-with-d_splice_alias-errors.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0005-Linux-3.17-Deal-with-d_splice_alias-errors.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -From: Marc Dionne -Date: Thu, 25 Sep 2014 07:52:12 -0300 -Subject: 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 -Reviewed-by: Perry Ruiter -Reviewed-by: Andrew Deason -Reviewed-by: D Brashear -(cherry picked from commit 5815ee92a41cdcf105741d834042a5617dc4c219) - -Change-Id: Ie86009ede93255c85fcf640af14c598fe1e42ca9 -Reviewed-on: http://gerrit.openafs.org/11550 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Stephan Wiesand -(cherry picked from commit 663bdfcb16ab742ef12acca110f279b749f15586) ---- - 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)); - } - diff -Nru openafs-1.6.10/debian/patches/0006-LINUX-Check-afs_lookup-return-code-explicitly.patch openafs-1.6.11.1/debian/patches/0006-LINUX-Check-afs_lookup-return-code-explicitly.patch --- openafs-1.6.10/debian/patches/0006-LINUX-Check-afs_lookup-return-code-explicitly.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0006-LINUX-Check-afs_lookup-return-code-explicitly.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -From: Andrew Deason -Date: Thu, 24 Jul 2014 11:07:45 -0500 -Subject: LINUX: Check afs_lookup return code explicitly - -Checking if the returned vcache is NULL or not is a bit of an indirect -way to check if an error occurred. Just check the return code itself, -to make sure we notice if any kind of error is reported. - -Suggested by Chas Williams. - -Reviewed-on: http://gerrit.openafs.org/11321 -Reviewed-by: Chas Williams - CONTRACTOR -Tested-by: BuildBot -Reviewed-by: D Brashear -(cherry picked from commit 2edf5c0382385f898a017fd8e0e2429f8b2b3520) - -Change-Id: I7e123ab1cf88570a6b18e438e01409ed7804e014 -Reviewed-on: http://gerrit.openafs.org/11558 -Reviewed-by: Benjamin Kaduk -Tested-by: BuildBot -Reviewed-by: Stephan Wiesand -(cherry picked from commit d3f0c37b796b02e05baf9d8270bd95d713d08b62) ---- - src/afs/LINUX/osi_vnodeops.c | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 3ddcf42..4d29efb 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -943,6 +943,7 @@ check_bad_parent(struct dentry *dp) - cred_t *credp; - struct dentry *parent; - struct vcache *vcp, *pvc, *avc = NULL; -+ int code; - - vcp = VTOAFS(dp->d_inode); - parent = dget_parent(dp); -@@ -952,8 +953,8 @@ check_bad_parent(struct dentry *dp) - credp = crref(); - - /* force a lookup, so vcp->mvid is fixed up */ -- afs_lookup(pvc, (char *)dp->d_name.name, &avc, credp); -- if (!avc || vcp != avc) { /* bad, very bad.. */ -+ code = afs_lookup(pvc, (char *)dp->d_name.name, &avc, credp); -+ if (code || vcp != avc) { /* bad, very bad.. */ - afs_Trace4(afs_iclSetp, CM_TRACE_TMP_1S3L, ICL_TYPE_STRING, - "check_bad_parent: bad pointer returned from afs_lookup origvc newvc dentry", - ICL_TYPE_POINTER, vcp, ICL_TYPE_POINTER, avc, -@@ -1233,7 +1234,7 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags) - - credp = crref(); - code = afs_lookup(pvcp, (char *)dp->d_name.name, &tvc, credp); -- if (!tvc || tvc != vcp) { -+ if (code || tvc != vcp) { - dput(parent); - /* Force unhash; the name doesn't point to this file - * anymore. */ -@@ -1478,7 +1479,7 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) - AFS_GLOCK(); - code = afs_lookup(VTOAFS(dip), (char *)comp, &vcp, credp); - -- if (vcp) { -+ if (!code) { - struct vattr *vattr = NULL; - struct vcache *parent_vc = VTOAFS(dip); - diff -Nru openafs-1.6.10/debian/patches/0007-LINUX-Avoid-d_revalidate-failure-on-mtpt-mismatch.patch openafs-1.6.11.1/debian/patches/0007-LINUX-Avoid-d_revalidate-failure-on-mtpt-mismatch.patch --- openafs-1.6.10/debian/patches/0007-LINUX-Avoid-d_revalidate-failure-on-mtpt-mismatch.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0007-LINUX-Avoid-d_revalidate-failure-on-mtpt-mismatch.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -From: Andrew Deason -Date: Tue, 28 Oct 2014 00:10:56 -0500 -Subject: LINUX: Avoid d_revalidate failure on mtpt mismatch - -Currently, if afs_linux_dentry_revalidate is given an inode that -corresponds to a mtpt vcache ('vcp'), it resolves the mtpt to its root -dir if it's easy to do so (mvid and CMValid are set). Later on, we run -afs_lookup to see if looking up our dentry's name returns the same -vcache that we got; afs_lookup presumably will also resolve the mtpt -if it's easy to do so. - -However, it is possible that afs_linux_dentry_revalidate and -afs_lookup will make different decisions as to whether or not they -resolve a mtpt to a dir. Specifically, if CMValid is cleared after -afs_linux_dentry_revalidate checks for it, but before afs_lookup does, -then afs_lookup will return a different vcache than -afs_linux_dentry_revalidate is expecting, even though the relevant -directory entry has not changed. That is, tvc is not equal to vcp, but -tvc could be a mtpt that resolves to vcp, or vice versa. CMValid can -be cleared by another thread at virtually any time, since this is -cleared in some situations when we're not sure if the mtpt resolution -is still valid (callbacks are broken, vldb cache entries expire, etc). - -afs_linux_dentry_revalidate interprets this situation to mean that the -directory entry has changed, and so it eventually d_drop's the -associated dentry. The way that this manifests to users is that a -"fakestatted" mtpt can appear to be deleted effectively randomly, even -when nothing has changed. This can be a problem because this causes -the getcwd() syscall to return ENOENT when the working directory -involves such an affected directory. - -To fix this situation, we just detect if afs_lookup returned either -'vcp' (our possibly-resolved vcache), or the original inode associated -with the dentry we are revalidating. If the returned vcache matches -either of these, then the entry is okay and we don't need to -invalidate or drop anything. - -FIXES 131780 - -Reviewed-on: http://gerrit.openafs.org/11559 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Tested-by: Anders Kaseorg -Reviewed-by: Anders Kaseorg -Reviewed-by: D Brashear -(cherry picked from commit ba1cc838ab4a80b7a7787c441a79aca31d84808c) - -Change-Id: I3273cc15ebe7fd94f3127840fdc5316bd7458e7c -Reviewed-on: http://gerrit.openafs.org/11568 -Reviewed-by: Anders Kaseorg -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Stephan Wiesand -(cherry picked from commit 2fd2c69257edff968ef24a1d903bd602817bbf01) ---- - src/afs/LINUX/osi_vnodeops.c | 29 ++++++++++++++++++++++++++++- - 1 file changed, 28 insertions(+), 1 deletion(-) - -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 4d29efb..9a164ea 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1231,10 +1231,37 @@ afs_linux_dentry_revalidate(struct dentry *dp, int flags) - if (hgetlo(pvcp->f.m.DataVersion) > dp->d_time || !(vcp->f.states & CStatd)) { - struct vattr *vattr = NULL; - int code; -+ int lookup_good; - - credp = crref(); - code = afs_lookup(pvcp, (char *)dp->d_name.name, &tvc, credp); -- if (code || tvc != vcp) { -+ -+ if (code) { -+ /* We couldn't perform the lookup, so we're not okay. */ -+ lookup_good = 0; -+ -+ } else if (tvc == vcp) { -+ /* We got back the same vcache, so we're good. */ -+ lookup_good = 1; -+ -+ } else if (tvc == VTOAFS(dp->d_inode)) { -+ /* We got back the same vcache, so we're good. This is -+ * different from the above case, because sometimes 'vcp' is -+ * not the same as the vcache for dp->d_inode, if 'vcp' was a -+ * mtpt and we evaluated it to a root dir. In rare cases, -+ * afs_lookup might not evalute the mtpt when we do, or vice -+ * versa, so the previous case will not succeed. But this is -+ * still 'correct', so make sure not to mark the dentry as -+ * invalid; it still points to the same thing! */ -+ lookup_good = 1; -+ -+ } else { -+ /* We got back a different file, so we're definitely not -+ * okay. */ -+ lookup_good = 0; -+ } -+ -+ if (!lookup_good) { - dput(parent); - /* Force unhash; the name doesn't point to this file - * anymore. */ diff -Nru openafs-1.6.10/debian/patches/0008-Linux-3.18-d_invalidate-can-no-longer-return-an-erro.patch openafs-1.6.11.1/debian/patches/0008-Linux-3.18-d_invalidate-can-no-longer-return-an-erro.patch --- openafs-1.6.10/debian/patches/0008-Linux-3.18-d_invalidate-can-no-longer-return-an-erro.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0008-Linux-3.18-d_invalidate-can-no-longer-return-an-erro.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -From: Marc Dionne -Date: Thu, 23 Oct 2014 11:12:57 -0400 -Subject: Linux 3.18: d_invalidate can no longer return an error - -d_invalidate is now defined as void and does not have -a return value to check. - -Reviewed-on: http://gerrit.openafs.org/11562 -Tested-by: BuildBot -Reviewed-by: D Brashear -(cherry picked from commit a42f01d5ebb13da575b3123800ee6990743155ab) - -Change-Id: I8542404771c4a7962238efd9a53d7dfcf4011c96 -Reviewed-on: http://gerrit.openafs.org/11569 -Reviewed-by: Anders Kaseorg -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Andrew Deason -Reviewed-by: Stephan Wiesand -(cherry picked from commit b3527c802ad82cdecc0df6dfa42b228710ad5fd4) ---- - acinclude.m4 | 1 + - src/afs/LINUX/osi_compat.h | 11 +++++++++++ - src/afs/LINUX/osi_vcache.c | 4 +++- - src/cf/linux-test4.m4 | 13 +++++++++++++ - 4 files changed, 28 insertions(+), 1 deletion(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 13d70db..b10cfb6 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -1024,6 +1024,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - LINUX_IOP_I_CREATE_TAKES_BOOL - LINUX_DOP_D_REVALIDATE_TAKES_UNSIGNED - LINUX_IOP_LOOKUP_TAKES_UNSIGNED -+ LINUX_D_INVALIDATE_IS_VOID - - dnl If we are guaranteed that keyrings will work - that is - dnl a) The kernel has keyrings enabled -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index c500c61..26673a7 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -557,4 +557,15 @@ afs_maybe_shrink_dcache(struct dentry *dp) - #endif - } - -+static inline int -+afs_d_invalidate(struct dentry *dp) -+{ -+#if defined(D_INVALIDATE_IS_VOID) -+ d_invalidate(dp); -+ return 0; -+#else -+ return d_invalidate(dp); -+#endif -+} -+ - #endif /* AFS_LINUX_OSI_COMPAT_H */ -diff --git a/src/afs/LINUX/osi_vcache.c b/src/afs/LINUX/osi_vcache.c -index 99aab91..1d0db82 100644 ---- a/src/afs/LINUX/osi_vcache.c -+++ b/src/afs/LINUX/osi_vcache.c -@@ -13,6 +13,8 @@ - #include "afs/sysincludes.h" /*Standard vendor system headers */ - #include "afsincludes.h" /*AFS-based standard headers */ - -+#include "osi_compat.h" -+ - int - osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep) { - int code; -@@ -71,7 +73,7 @@ restart: - dget(dentry); - - spin_unlock(&inode->i_lock); -- if (d_invalidate(dentry) == -EBUSY) { -+ if (afs_d_invalidate(dentry) == -EBUSY) { - dput(dentry); - /* perhaps lock and try to continue? (use cur as head?) */ - goto inuse; -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 1759d9e..34c5d4d 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -786,3 +786,16 @@ AC_DEFUN([LINUX_IOP_LOOKUP_TAKES_UNSIGNED], [ - [define if your iops.lookup takes an unsigned int argument], - [-Werror]) - ]) -+ -+ -+AC_DEFUN([LINUX_D_INVALIDATE_IS_VOID], [ -+ AC_CHECK_LINUX_BUILD([whether d_invalidate returns void], -+ [ac_cv_linux_func_d_invalidate_returns_void], -+ [#include ], -+ [ -+ void d_invalidate(struct dentry *); -+ ], -+ [D_INVALIDATE_IS_VOID], -+ [define if your d_invalidate returns void], -+ []) -+]) diff -Nru openafs-1.6.10/debian/patches/0009-Linux-3.18-key_type-no-longer-has-a-match-op.patch openafs-1.6.11.1/debian/patches/0009-Linux-3.18-key_type-no-longer-has-a-match-op.patch --- openafs-1.6.10/debian/patches/0009-Linux-3.18-key_type-no-longer-has-a-match-op.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0009-Linux-3.18-key_type-no-longer-has-a-match-op.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -From: Marc Dionne -Date: Thu, 23 Oct 2014 11:27:55 -0400 -Subject: Linux 3.18: key_type no longer has a match op - -Structure key_type no longer has a match op, and -overriding the default matching has to be done -differently. - -Our current match op doesn't do anything special so there's -no need to try to override the defaults; just remove the -assignment of .match and the associated function. - -Reviewed-on: http://gerrit.openafs.org/11563 -Tested-by: BuildBot -Reviewed-by: D Brashear -(cherry picked from commit b5de4a9f42bb83ae03f2f647b11a1200a502d013) - -Change-Id: I7baca4a7f02eac45671e1e9ebf48534cdd5830be -Reviewed-on: http://gerrit.openafs.org/11570 -Reviewed-by: Anders Kaseorg -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Andrew Deason -Reviewed-by: Stephan Wiesand -(cherry picked from commit 9d653bd966b47223eaaf6f8a5d983b6634bdf0d5) ---- - acinclude.m4 | 3 ++- - src/afs/LINUX/osi_groups.c | 4 ++++ - 2 files changed, 6 insertions(+), 1 deletion(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index b10cfb6..72dd6c1 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -840,8 +840,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_STRUCT([file_operations], [sendfile], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h]) -- AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) - AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h]) -+ AC_CHECK_LINUX_STRUCT([key_type], [match], [key-type.h]) -+ AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) - AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h]) - AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h]) - AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h]) -diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c -index f3f87c2..f1d97a6 100644 ---- a/src/afs/LINUX/osi_groups.c -+++ b/src/afs/LINUX/osi_groups.c -@@ -498,10 +498,12 @@ error: - return code; - } - -+#if defined(STRUCT_KEY_TYPE_HAS_MATCH) - static int afs_pag_match(const struct key *key, const void *description) - { - return strcmp(key->description, description) == 0; - } -+#endif - - static void afs_pag_destroy(struct key *key) - { -@@ -527,7 +529,9 @@ struct key_type key_type_afs_pag = - #else - .instantiate = afs_pag_instantiate, - #endif -+#if defined(STRUCT_KEY_TYPE_HAS_MATCH) - .match = afs_pag_match, -+#endif - .destroy = afs_pag_destroy, - }; - diff -Nru openafs-1.6.10/debian/patches/0010-LINUX-Avoid-check-for-key_type.match-existence.patch openafs-1.6.11.1/debian/patches/0010-LINUX-Avoid-check-for-key_type.match-existence.patch --- openafs-1.6.10/debian/patches/0010-LINUX-Avoid-check-for-key_type.match-existence.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0010-LINUX-Avoid-check-for-key_type.match-existence.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -From: Andrew Deason -Date: Wed, 5 Nov 2014 10:22:00 -0600 -Subject: LINUX: Avoid check for key_type.match existence - -Commit b5de4a9f removed our key_type 'match' function for kernels that -do not have such a 'match' function pointer. However, this added a -configure test where we are supposed to fail for the "new" behavior, -which is discouraged. - -This causes an actual problem, because this test will fail on at least -RHEL5, due to arguably unrelated reasons (the header file for the -relevant struct is in key.h instead of key-type.h). And so, in that -situation we avoid defining a 'match' function callback, meaning our -'match' function callback is NULL, which causes a panic when we try to -actually look up keys for a PAG. - -To fix this, transform the 'match' config test into one where we -succeed for the "new" behavior. We do this by testing for the -existence of the new functionality that replaced the old 'match' -function, which is the match_preparse function (specifically, the -'cmp' field in the structure accepted by match_preparse). This should -cause unrelated compilation errors to cause us to revert to the "old" -behavior instead of the "new" behavior. At worst, this should cause -build issues if we get the config test wrong (since we will try to use -the 'match' function definition that does not exist), instead of -panicing at runtime. - -Note that while we test for key_type.match_preparse, we don't actually -use that function, since our 'match' functionality is the same as the -default behavior (according to b5de4a9f). So, we can avoid defining -any such function for newer kernels. - -Thanks to Stephan Wiesand for bisecting this issue. - -Reviewed-on: http://gerrit.openafs.org/11589 -Reviewed-by: Marc Dionne -Reviewed-by: Stephan Wiesand -Tested-by: BuildBot -Reviewed-by: Jeffrey Altman -(cherry picked from commit a9a3cb2efff7e6c020be4687b004d157bc070ac6) - -Change-Id: I59f40258c5ea35a59681f436095922d111e344f6 -Reviewed-on: http://gerrit.openafs.org/11595 -Tested-by: Anders Kaseorg -Reviewed-by: Anders Kaseorg -Tested-by: BuildBot -Reviewed-by: Marc Dionne -Reviewed-by: Benjamin Kaduk -Reviewed-by: Andrew Deason -Reviewed-by: Stephan Wiesand -(cherry picked from commit 9ff1cd92d023f9a949b499891f552b41cb0c52e4) ---- - acinclude.m4 | 2 +- - src/afs/LINUX/osi_groups.c | 10 ++++++++-- - 2 files changed, 9 insertions(+), 3 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 72dd6c1..d324dc1 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -841,7 +841,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_STRUCT([file_system_type], [mount], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode_operations], [truncate], [fs.h]) - AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h]) -- AC_CHECK_LINUX_STRUCT([key_type], [match], [key-type.h]) -+ AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h]) - AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) - AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h]) - AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h]) -diff --git a/src/afs/LINUX/osi_groups.c b/src/afs/LINUX/osi_groups.c -index f1d97a6..3b068e5 100644 ---- a/src/afs/LINUX/osi_groups.c -+++ b/src/afs/LINUX/osi_groups.c -@@ -498,7 +498,13 @@ error: - return code; - } - --#if defined(STRUCT_KEY_TYPE_HAS_MATCH) -+#if !defined(STRUCT_KEY_TYPE_HAS_MATCH_PREPARSE) -+/* Note that we only define a ->match function if struct -+ * key_type.match_preparse does _not_ exist. If key_type.match_preparse does -+ * exist, we would use that to specify an alternative comparison function; but -+ * since we just rely on default behavior, we don't need to actually specify -+ * one. But for kernels with no such match_preparse function, we need to -+ * specify a 'match' function, since there is no default. */ - static int afs_pag_match(const struct key *key, const void *description) - { - return strcmp(key->description, description) == 0; -@@ -529,7 +535,7 @@ struct key_type key_type_afs_pag = - #else - .instantiate = afs_pag_instantiate, - #endif --#if defined(STRUCT_KEY_TYPE_HAS_MATCH) -+#if !defined(STRUCT_KEY_TYPE_HAS_MATCH_PREPARSE) - .match = afs_pag_match, - #endif - .destroy = afs_pag_destroy, diff -Nru openafs-1.6.10/debian/patches/0011-Unix-CM-Avoid-using-stale-DV-in-afs_StoreAllSegments.patch openafs-1.6.11.1/debian/patches/0011-Unix-CM-Avoid-using-stale-DV-in-afs_StoreAllSegments.patch --- openafs-1.6.10/debian/patches/0011-Unix-CM-Avoid-using-stale-DV-in-afs_StoreAllSegments.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0011-Unix-CM-Avoid-using-stale-DV-in-afs_StoreAllSegments.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -From: Marc Dionne -Date: Fri, 19 Dec 2014 10:11:53 -0500 -Subject: Unix CM: Avoid using stale DV in afs_StoreAllSegments - -It was reported in RT 131976 that on Linux some file -corruption was observed when doing mmap writes to -a file substantially larger than the cache size. - -osi_VM_StoreAllSegments drops locks and asks the OS to flush -any dirty pages in the file 's mapping. This will trigger -calls into our writepage op, and if the number of dirty -cache chunks is too high (as will happen for a file larger -than the cache size), afs_DoPartialWrite will recursively -call afs_StoreAllSegments and some chunks will be written -back to the server. After potentially doing this several -times, control will return to the original afs_StoreAllSegments. - -At that point the data version that was stored before -osi_VM_StoreAllSegments is no longer correct, leading to -possible data corruption. - -Triggering this bug requires writing a file larger than the -cache so that partial stores are done, and writing enough -data to exceed the system's maximum dirty ratio and cause -it to initiate writeback. - -To fix, just wait until after osi_VM_StoreAllSegments to -look at and store the data version - -FIXES 131976 - -Reviewed-on: http://gerrit.openafs.org/11644 -Tested-by: BuildBot -Reviewed-by: Jeffrey Altman -(cherry picked from commit b22c586bcdf785c489009ab96cbb572181cb9b09) - -Change-Id: I32a2f6f32d432fe4a2e21ebd4bb278a9d7e5499f -Reviewed-on: http://gerrit.openafs.org/11656 -Tested-by: BuildBot -Reviewed-by: Benjamin Kaduk -Reviewed-by: Stephan Wiesand -(cherry picked from commit 013e8db33fbec8b5db4ac5a1ec94a7f5b2afbc45) ---- - src/afs/afs_segments.c | 10 ++++++++-- - 1 file changed, 8 insertions(+), 2 deletions(-) - -diff --git a/src/afs/afs_segments.c b/src/afs/afs_segments.c -index f407b49..1ea3311 100644 ---- a/src/afs/afs_segments.c -+++ b/src/afs/afs_segments.c -@@ -174,8 +174,6 @@ afs_StoreAllSegments(struct vcache *avc, struct vrequest *areq, - - AFS_STATCNT(afs_StoreAllSegments); - -- hset(oldDV, avc->f.m.DataVersion); -- hset(newDV, avc->f.m.DataVersion); - hash = DVHash(&avc->f.fid); - foreign = (avc->f.states & CForeign); - dcList = (struct dcache **)osi_AllocLargeSpace(AFS_LRALLOCSIZ); -@@ -213,6 +211,14 @@ afs_StoreAllSegments(struct vcache *avc, struct vrequest *areq, - /*printf("Net down in afs_StoreSegments\n");*/ - return ENETDOWN; - } -+ -+ /* -+ * Can't do this earlier because osi_VM_StoreAllSegments drops locks -+ * and can indirectly do some stores that increase the DV. -+ */ -+ hset(oldDV, avc->f.m.DataVersion); -+ hset(newDV, avc->f.m.DataVersion); -+ - ConvertWToSLock(&avc->lock); - - /* diff -Nru openafs-1.6.10/debian/patches/0012-afs-Fix-some-afs_conn-overcounts.patch openafs-1.6.11.1/debian/patches/0012-afs-Fix-some-afs_conn-overcounts.patch --- openafs-1.6.10/debian/patches/0012-afs-Fix-some-afs_conn-overcounts.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0012-afs-Fix-some-afs_conn-overcounts.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -From: Andrew Deason -Date: Sun, 14 Sep 2014 14:10:11 -0500 -Subject: afs: Fix some afs_conn overcounts - -The usual pattern of using afs_Conn looks like this: - - do { - tc = afs_Conn(...); - if (tc) { - code = /* ... */ - } else { - code = -1; - } - } while (afs_Analyze(...)); - -The afs_Analyze call, amongst other things, puts back the reference to -the connection obtained from afs_Conn. If anything inside the do/while -block exits that block without calling afs_Analyze or afs_PutConn, we -will leak a reference to the conn. - -A few places currently do this, by jumping out of the loop with -'goto's. Specifically, in afs_dcache.c and afs_bypasscache.c. These -locations currently leak references to our connection object (and to -the underlying Rx connection object), which can cause problems over -time. Specifically, this can cause a panic when the refcount overflows -and becomes negative, causing a panic message that looks like: - - afs_PutConn: refcount imbalance 0xd34db33f -32768 - -To avoid this, make sure we afs_PutConn in these cases where we 'goto' -out of the afs_Conn/afs_Analyze loop. Perhaps ideally we should cause -afs_Analyze itself to be called in these situations, but for now just -fix the problem with the least amount of impact possible. - -FIXES 131885 - -Reviewed-on: http://gerrit.openafs.org/11464 -Reviewed-by: Benjamin Kaduk -Reviewed-by: Daria Brashear -Tested-by: Benjamin Kaduk -Reviewed-by: Jeffrey Altman -(cherry picked from commit 54c0ee608f4afd2b178c9b60eabfc3564293d996) - -Change-Id: Ic02ede4f8177863e8079b4a92c9bad492d6dc97b -Reviewed-on: http://gerrit.openafs.org/11645 -Reviewed-by: Benjamin Kaduk -Reviewed-by: Daria Brashear -Tested-by: BuildBot -(cherry picked from commit fba39040435afe63b0737945e2269375107fc686) ---- - src/afs/afs_bypasscache.c | 1 + - src/afs/afs_dcache.c | 7 +++++++ - 2 files changed, 8 insertions(+) - -diff --git a/src/afs/afs_bypasscache.c b/src/afs/afs_bypasscache.c -index 744feb2..8fc6009 100644 ---- a/src/afs/afs_bypasscache.c -+++ b/src/afs/afs_bypasscache.c -@@ -637,6 +637,7 @@ afs_PrefetchNoCache(struct vcache *avc, - } else { - afs_warn("BYPASS: StartRXAFS_FetchData failed: %d\n", code); - unlock_and_release_pages(auio); -+ afs_PutConn(tc, rxconn, SHARED_LOCK); - goto done; - } - if (code == 0) { -diff --git a/src/afs/afs_dcache.c b/src/afs/afs_dcache.c -index dc1e039..a156e22 100644 ---- a/src/afs/afs_dcache.c -+++ b/src/afs/afs_dcache.c -@@ -2399,6 +2399,13 @@ afs_GetDCache(struct vcache *avc, afs_size_t abyte, - afs_PutDCache(tdc); - tdc = 0; - ReleaseReadLock(&avc->lock); -+ -+ if (tc) { -+ /* If we have a connection, we must put it back, -+ * since afs_Analyze will not be called here. */ -+ afs_PutConn(tc, rxconn, SHARED_LOCK); -+ } -+ - slowPass = 1; - goto RetryGetDCache; - } diff -Nru openafs-1.6.10/debian/patches/0013-Linux-Move-code-to-reset-the-root-to-afs-LINUX.patch openafs-1.6.11.1/debian/patches/0013-Linux-Move-code-to-reset-the-root-to-afs-LINUX.patch --- openafs-1.6.10/debian/patches/0013-Linux-Move-code-to-reset-the-root-to-afs-LINUX.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0013-Linux-Move-code-to-reset-the-root-to-afs-LINUX.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -From: Marc Dionne -Date: Thu, 18 Dec 2014 06:57:22 -0500 -Subject: Linux: Move code to reset the root to afs/LINUX -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -Move the Linux specific bit of code to reset the root to -afs/LINUX platform specific files. Things that play with -the Linux vfs internals should not be exposed here. - -No functional change, but this helps cleanup some ifdef -mess. - -Reviewed-on: http://gerrit.openafs.org/11641 -Tested-by: BuildBot -Reviewed-by: Michael Laß -Reviewed-by: Daria Brashear -(cherry picked from commit 6ca324e565c34d9d04f3c553b7d0febe675ae538) - -Change-Id: I82803669dd34d7abeb29040fbb38ec2f000f2601 -Reviewed-on: http://gerrit.openafs.org/11658 -Tested-by: BuildBot -Reviewed-by: Chas Williams - CONTRACTOR -Reviewed-by: Daria Brashear -Reviewed-by: Stephan Wiesand -(cherry picked from commit a6013738362f4d1487ca57282b2428e3ba962720) ---- - src/afs/LINUX/osi_prototypes.h | 3 ++ - src/afs/LINUX/osi_vcache.c | 61 ++++++++++++++++++++++++++++++++++++ - src/afs/LINUX24/osi_prototypes.h | 3 ++ - src/afs/LINUX24/osi_vcache.c | 36 +++++++++++++++++++++ - src/afs/afs_daemons.c | 67 +++------------------------------------- - 5 files changed, 108 insertions(+), 62 deletions(-) - -diff --git a/src/afs/LINUX/osi_prototypes.h b/src/afs/LINUX/osi_prototypes.h -index 9002882..1d2ca0d 100644 ---- a/src/afs/LINUX/osi_prototypes.h -+++ b/src/afs/LINUX/osi_prototypes.h -@@ -79,6 +79,9 @@ extern void osi_VM_FlushPages(struct vcache *avc, afs_ucred_t *credp); - extern void osi_VM_Truncate(struct vcache *avc, int alen, - afs_ucred_t *acred); - -+/* osi_vcache.c */ -+extern void osi_ResetRootVCache(afs_uint32 volid); -+ - /* osi_vfsops.c */ - extern void vattr2inode(struct inode *ip, struct vattr *vp); - extern int afs_init_inodecache(void); -diff --git a/src/afs/LINUX/osi_vcache.c b/src/afs/LINUX/osi_vcache.c -index 1d0db82..391e7d4 100644 ---- a/src/afs/LINUX/osi_vcache.c -+++ b/src/afs/LINUX/osi_vcache.c -@@ -143,3 +143,64 @@ osi_PostPopulateVCache(struct vcache *avc) { - vSetType(avc, VREG); - } - -+/** -+ * osi_ResetRootVCache - Reset the root vcache -+ * Reset the dentry associated with the afs root. -+ * Called from afs_CheckRootVolume when we notice that -+ * the root volume ID has changed. -+ * -+ * @volid: volume ID for the afs root -+ */ -+void -+osi_ResetRootVCache(afs_uint32 volid) -+{ -+ struct vrequest *treq = NULL; -+ struct vattr vattr; -+ cred_t *credp; -+ struct dentry *dp; -+ struct vcache *vcp; -+ struct inode *root = AFSTOV(afs_globalVp); -+ -+ afs_rootFid.Fid.Volume = volid; -+ afs_rootFid.Fid.Vnode = 1; -+ afs_rootFid.Fid.Unique = 1; -+ -+ credp = crref(); -+ if (afs_CreateReq(&treq, credp)) -+ goto out; -+ vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); -+ if (!vcp) -+ goto out; -+ afs_getattr(vcp, &vattr, credp); -+ afs_fill_inode(AFSTOV(vcp), &vattr); -+ -+ dp = d_find_alias(root); -+ -+#if defined(HAVE_DCACHE_LOCK) -+ spin_lock(&dcache_lock); -+#else -+ spin_lock(&AFSTOV(vcp)->i_lock); -+#endif -+ spin_lock(&dp->d_lock); -+#if defined(D_ALIAS_IS_HLIST) -+ hlist_del_init(&dp->d_alias); -+ hlist_add_head(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); -+#else -+ list_del_init(&dp->d_alias); -+ list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); -+#endif -+ dp->d_inode = AFSTOV(vcp); -+ spin_unlock(&dp->d_lock); -+#if defined(HAVE_DCACHE_LOCK) -+ spin_unlock(&dcache_lock); -+#else -+ spin_unlock(&AFSTOV(vcp)->i_lock); -+#endif -+ dput(dp); -+ -+ AFS_RELE(root); -+ afs_globalVp = vcp; -+out: -+ crfree(credp); -+ afs_DestroyReq(treq); -+} -diff --git a/src/afs/LINUX24/osi_prototypes.h b/src/afs/LINUX24/osi_prototypes.h -index ad2522c..39d6402 100644 ---- a/src/afs/LINUX24/osi_prototypes.h -+++ b/src/afs/LINUX24/osi_prototypes.h -@@ -69,6 +69,9 @@ extern void osi_syscall_clean(void); - extern int osi_sysctl_init(void); - extern void osi_sysctl_clean(void); - -+/* osi_vcache.c */ -+extern void osi_ResetRootVCache(afs_uint32 volid); -+ - /* osi_vm.c */ - extern int osi_VM_FlushVCache(struct vcache *avc, int *slept); - extern void osi_VM_TryToSmush(struct vcache *avc, afs_ucred_t *acred, -diff --git a/src/afs/LINUX24/osi_vcache.c b/src/afs/LINUX24/osi_vcache.c -index bbaf5ce..853a357 100644 ---- a/src/afs/LINUX24/osi_vcache.c -+++ b/src/afs/LINUX24/osi_vcache.c -@@ -119,3 +119,39 @@ osi_PostPopulateVCache(struct vcache *avc) { - vSetType(avc, VREG); - } - -+void -+osi_ResetRootVCache(afs_uint32 volid) -+{ -+ struct vrequest *treq = NULL; -+ struct vattr vattr; -+ cred_t *credp; -+ struct dentry *dp; -+ struct vcache *vcp; -+ -+ afs_rootFid.Fid.Volume = volid; -+ afs_rootFid.Fid.Vnode = 1; -+ afs_rootFid.Fid.Unique = 1; -+ -+ credp = crref(); -+ if (afs_CreateReq(&treq, credp)) -+ goto out; -+ vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); -+ if (!vcp) -+ goto out; -+ afs_getattr(vcp, &vattr, credp); -+ afs_fill_inode(AFSTOV(vcp), &vattr); -+ -+ dp = d_find_alias(AFSTOV(afs_globalVp)); -+ spin_lock(&dcache_lock); -+ list_del_init(&dp->d_alias); -+ list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); -+ dp->d_inode = AFSTOV(vcp); -+ spin_unlock(&dcache_lock); -+ dput(dp); -+ -+ AFS_FAST_RELE(afs_globalVp); -+ afs_globalVp = vcp; -+out: -+ crfree(credp); -+ afs_DestroyReq(treq); -+} -diff --git a/src/afs/afs_daemons.c b/src/afs/afs_daemons.c -index 8e5f6ad..c26cdee 100644 ---- a/src/afs/afs_daemons.c -+++ b/src/afs/afs_daemons.c -@@ -363,71 +363,14 @@ afs_CheckRootVolume(void) - * count to zero and fs checkv is executed when the current - * directory is /afs. - */ --#ifdef AFS_LINUX20_ENV -- { -- struct vrequest *treq = NULL; -- struct vattr vattr; -- cred_t *credp; -- struct dentry *dp; -- struct vcache *vcp; -- -- afs_rootFid.Fid.Volume = volid; -- afs_rootFid.Fid.Vnode = 1; -- afs_rootFid.Fid.Unique = 1; -- -- credp = crref(); -- if (afs_CreateReq(&treq, credp)) -- goto out; -- vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); -- if (!vcp) -- goto out; -- afs_getattr(vcp, &vattr, credp); -- afs_fill_inode(AFSTOV(vcp), &vattr); -- -- dp = d_find_alias(AFSTOV(afs_globalVp)); -- --#if defined(AFS_LINUX24_ENV) --#if defined(HAVE_DCACHE_LOCK) -- spin_lock(&dcache_lock); --#else -- spin_lock(&AFSTOV(vcp)->i_lock); --#endif --#if defined(AFS_LINUX26_ENV) -- spin_lock(&dp->d_lock); --#endif --#endif --#if defined(D_ALIAS_IS_HLIST) -- hlist_del_init(&dp->d_alias); -- hlist_add_head(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); --#else -- list_del_init(&dp->d_alias); -- list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); --#endif -- dp->d_inode = AFSTOV(vcp); --#if defined(AFS_LINUX24_ENV) --#if defined(AFS_LINUX26_ENV) -- spin_unlock(&dp->d_lock); --#endif --#if defined(HAVE_DCACHE_LOCK) -- spin_unlock(&dcache_lock); --#else -- spin_unlock(&AFSTOV(vcp)->i_lock); --#endif --#endif -- dput(dp); -- -- AFS_FAST_RELE(afs_globalVp); -- afs_globalVp = vcp; -- out: -- crfree(credp); -- afs_DestroyReq(treq); -- } -+#ifdef AFS_LINUX22_ENV -+ osi_ResetRootVCache(volid); - #else --#ifdef AFS_DARWIN80_ENV -+# ifdef AFS_DARWIN80_ENV - afs_PutVCache(afs_globalVp); --#else -+# else - AFS_FAST_RELE(afs_globalVp); --#endif -+# endif - afs_globalVp = 0; - #endif - } diff -Nru openafs-1.6.10/debian/patches/0014-Linux-d_alias-becomes-d_u.d_alias.patch openafs-1.6.11.1/debian/patches/0014-Linux-d_alias-becomes-d_u.d_alias.patch --- openafs-1.6.10/debian/patches/0014-Linux-d_alias-becomes-d_u.d_alias.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0014-Linux-d_alias-becomes-d_u.d_alias.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -From: Marc Dionne -Date: Thu, 18 Dec 2014 07:13:46 -0500 -Subject: Linux: d_alias becomes d_u.d_alias -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -The fields in struct dentry are re-arranged so that d_alias -shares space wth d_rcu inside the d_u union. Some references -need to change from d_alias to d_u.d_alias. - -The kernel change was introduced for 3.19 but was also backported -to the 3.18 stable series in 3.18.1, so this commit is required -for 3.19 and current 3.18 kernels. - -Reviewed-on: http://gerrit.openafs.org/11642 -Reviewed-by: Anders Kaseorg -Reviewed-by: Michael Laß -Reviewed-by: Daria Brashear -Tested-by: BuildBot -(cherry picked from commit d6f29679098aff171e69511823b340ccf28e5c31) - -Change-Id: Ifb6199aa7fa922e64540d9fad1d2d79facbb9761 -Reviewed-on: http://gerrit.openafs.org/11659 -Reviewed-by: Chas Williams - CONTRACTOR -Tested-by: BuildBot -Reviewed-by: Daria Brashear -Reviewed-by: Stephan Wiesand -(cherry picked from commit 860764da5ee2e48a2c3f7552fad1766e19eae47f) ---- - acinclude.m4 | 1 + - src/afs/LINUX/osi_compat.h | 4 ++++ - src/cf/linux-test4.m4 | 9 ++++++++- - 3 files changed, 13 insertions(+), 1 deletion(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index d324dc1..fa429c7 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -828,6 +828,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - [backing-dev.h]) - AC_CHECK_LINUX_STRUCT([cred], [session_keyring], [cred.h]) - AC_CHECK_LINUX_STRUCT([ctl_table], [ctl_name], [sysctl.h]) -+ AC_CHECK_LINUX_STRUCT([dentry], [d_u.d_alias], [dcache.h]) - AC_CHECK_LINUX_STRUCT([dentry_operations], [d_automount], [dcache.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_alloc_sem], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_blkbits], [fs.h]) -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index 26673a7..b98e980 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -37,6 +37,10 @@ typedef struct vfs_path afs_linux_path_t; - typedef struct path afs_linux_path_t; - #endif - -+#if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) -+# define d_alias d_u.d_alias -+#endif -+ - #ifndef HAVE_LINUX_DO_SYNC_READ - static inline int - do_sync_read(struct file *fp, char *buf, size_t count, loff_t *offp) { -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 34c5d4d..5f5ec5c 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -723,7 +723,11 @@ AC_DEFUN([LINUX_D_ALIAS_IS_HLIST], [ - [#include ], - [struct dentry *d = NULL; - struct hlist_node *hn = NULL; -- d->d_alias = *hn;], -+ #if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) -+ d->d_u.d_alias = *hn; -+ #else -+ d->d_alias = *hn; -+ #endif], - [D_ALIAS_IS_HLIST], - [define if dentry->d_alias is an hlist], - []) -@@ -737,6 +741,9 @@ AC_DEFUN([LINUX_HLIST_ITERATOR_NO_NODE], [ - #include ], - [struct dentry *d = NULL, *cur; - struct inode *ip; -+ #if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) -+ # define d_alias d_u.d_alias -+ #endif - hlist_for_each_entry(cur, &ip->i_dentry, d_alias) { } - ], - [HLIST_ITERATOR_NO_NODE], diff -Nru openafs-1.6.10/debian/patches/0015-Linux-3.19-No-more-f_dentry.patch openafs-1.6.11.1/debian/patches/0015-Linux-3.19-No-more-f_dentry.patch --- openafs-1.6.10/debian/patches/0015-Linux-3.19-No-more-f_dentry.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0015-Linux-3.19-No-more-f_dentry.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -From: Marc Dionne -Date: Mon, 5 Jan 2015 07:03:16 -0500 -Subject: Linux 3.19: No more f_dentry - -Back in kernel 2.6 .20 struct file lost its f_dentry field -which was replaced by f_path.To ease transition f_dentry -was defined as f_dpath.dentry in the same header.This -define finally gets removed with kernel 3.19. - -Keep using f_dentry in the code, but add a configure test -for the presence of f_path and the absence of the f_dentry -macro so we can add it if its missing. - -Change - Id:I8e8a7e4d3ddd861018de50af1eb7315e730ad529 - -Reviewed-on: http://gerrit.openafs.org/11646 -Reviewed-by: Daria Brashear -Tested-by: BuildBot -(cherry picked from commit f9ca302b7a10ffc36f2439e068333ab147791c5a) - -Change-Id: I179bf2fbc22e824e40c60c59e5d223d49343e7a5 -Reviewed-on: http://gerrit.openafs.org/11660 -Reviewed-by: Chas Williams - CONTRACTOR -Tested-by: BuildBot -Reviewed-by: Daria Brashear -Reviewed-by: Stephan Wiesand -(cherry picked from commit 7ba61dfa6cedc4e6e106bd2079e564e554720d7e) ---- - acinclude.m4 | 1 + - src/afs/LINUX/osi_compat.h | 6 ++++++ - 2 files changed, 7 insertions(+) - -diff --git a/acinclude.m4 b/acinclude.m4 -index fa429c7..d2bb3b7 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -835,6 +835,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_STRUCT([inode], [i_blksize], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_mutex], [fs.h]) - AC_CHECK_LINUX_STRUCT([inode], [i_security], [fs.h]) -+ AC_CHECK_LINUX_STRUCT([file], [f_path], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [flock], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [iterate], [fs.h]) - AC_CHECK_LINUX_STRUCT([file_operations], [read_iter], [fs.h]) -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index b98e980..53b78b7 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -41,6 +41,12 @@ typedef struct path afs_linux_path_t; - # define d_alias d_u.d_alias - #endif - -+#if defined(STRUCT_FILE_HAS_F_PATH) -+# if !defined(f_dentry) -+# define f_dentry f_path.dentry -+# endif -+#endif -+ - #ifndef HAVE_LINUX_DO_SYNC_READ - static inline int - do_sync_read(struct file *fp, char *buf, size_t count, loff_t *offp) { diff -Nru openafs-1.6.10/debian/patches/0016-Linux-3.19-Use-mgs_iter-in-struct-msghdr.patch openafs-1.6.11.1/debian/patches/0016-Linux-3.19-Use-mgs_iter-in-struct-msghdr.patch --- openafs-1.6.10/debian/patches/0016-Linux-3.19-Use-mgs_iter-in-struct-msghdr.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0016-Linux-3.19-Use-mgs_iter-in-struct-msghdr.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -From: Marc Dionne -Date: Mon, 5 Jan 2015 07:13:37 -0500 -Subject: Linux 3.19: Use mgs_iter in struct msghdr - -struct msghdr gets msg_iov replaced by msg_iter. Add a configure -test and adjust the affected code. - -Reviewed-on: http://gerrit.openafs.org/11647 -Reviewed-by: Daria Brashear -Tested-by: BuildBot -(cherry picked from commit ec9a7c2db833efacfd0692c658c2d38ed9f852ba) - -Change-Id: I9d873626d8997922aacf67a5a9ce7621ed904faa -Reviewed-on: http://gerrit.openafs.org/11661 -Reviewed-by: Chas Williams - CONTRACTOR -Tested-by: BuildBot -Reviewed-by: Daria Brashear -Reviewed-by: Stephan Wiesand -(cherry picked from commit 78e8cce68d11e895140b0b03894ffdd62699ffbc) ---- - acinclude.m4 | 1 + - src/rx/LINUX/rx_knet.c | 5 +++++ - 2 files changed, 6 insertions(+) - -diff --git a/acinclude.m4 b/acinclude.m4 -index d2bb3b7..46d1215 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -845,6 +845,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_STRUCT([key_type], [instantiate_prep], [key-type.h]) - AC_CHECK_LINUX_STRUCT([key_type], [match_preparse], [key-type.h]) - AC_CHECK_LINUX_STRUCT([key_type], [preparse], [key-type.h]) -+ AC_CHECK_LINUX_STRUCT([msghdr], [msg_iter], [socket.h]) - AC_CHECK_LINUX_STRUCT([nameidata], [path], [namei.h]) - AC_CHECK_LINUX_STRUCT([proc_dir_entry], [owner], [proc_fs.h]) - AC_CHECK_LINUX_STRUCT([super_block], [s_bdi], [fs.h]) -diff --git a/src/rx/LINUX/rx_knet.c b/src/rx/LINUX/rx_knet.c -index cb7034e..3f7f2bc 100644 ---- a/src/rx/LINUX/rx_knet.c -+++ b/src/rx/LINUX/rx_knet.c -@@ -229,8 +229,13 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *from, struct iovec *iov, - #endif - memcpy(tmpvec, iov, iovcnt * sizeof(struct iovec)); - msg.msg_name = from; -+#if defined(STRUCT_MSGHDR_HAS_MSG_ITER) -+ msg.msg_iter.iov = tmpvec; -+ msg.msg_iter.nr_segs = iovcnt; -+#else - msg.msg_iov = tmpvec; - msg.msg_iovlen = iovcnt; -+#endif - msg.msg_control = NULL; - msg.msg_controllen = 0; - msg.msg_flags = 0; diff -Nru openafs-1.6.10/debian/patches/0017-Linux-3.19-struct-nameidata-becomes-opaque.patch openafs-1.6.11.1/debian/patches/0017-Linux-3.19-struct-nameidata-becomes-opaque.patch --- openafs-1.6.10/debian/patches/0017-Linux-3.19-struct-nameidata-becomes-opaque.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0017-Linux-3.19-struct-nameidata-becomes-opaque.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -From: Marc Dionne -Date: Mon, 5 Jan 2015 07:17:14 -0500 -Subject: Linux 3.19: struct nameidata becomes opaque - -With kernel 3.19 struct nameidata becomes opaque. As a result -we cannot rely on STRUCT_NAMEIDATA_HAS_PATH being true for -new kernels. - -Rework the conditions here so that STRUCT_NAMEIDATA_HAS_PATH -is only tested when we're using a nameidata structure and -the result matters. - -Also modify a configure test to use a nameidata pointer -instead of an actual structure. - -Reviewed-on: http://gerrit.openafs.org/11648 -Reviewed-by: Daria Brashear -Tested-by: BuildBot -(cherry picked from commit 72e22eb00f641f137f7dbe4195d6d82f4a8addc9) - -Change-Id: Ia794d9006a054d16a3b9e5b8ced55c798244d4c7 -Reviewed-on: http://gerrit.openafs.org/11662 -Reviewed-by: Chas Williams - CONTRACTOR -Tested-by: BuildBot -Reviewed-by: Daria Brashear -Reviewed-by: Stephan Wiesand -(cherry picked from commit 3da7b86c4ac998640b0b7ffd0e01613449d72e30) ---- - src/afs/LINUX/osi_compat.h | 16 ++++++++-------- - src/cf/linux-test4.m4 | 4 ++-- - 2 files changed, 10 insertions(+), 10 deletions(-) - -diff --git a/src/afs/LINUX/osi_compat.h b/src/afs/LINUX/osi_compat.h -index 53b78b7..c1cdb19 100644 ---- a/src/afs/LINUX/osi_compat.h -+++ b/src/afs/LINUX/osi_compat.h -@@ -475,23 +475,23 @@ afs_get_dentry_ref(struct nameidata *nd, struct vfsmount **mnt, struct dentry ** - #else - afs_get_dentry_ref(afs_linux_path_t *path, struct vfsmount **mnt, struct dentry **dpp) { - #endif --#if defined(STRUCT_NAMEIDATA_HAS_PATH) --# if defined(HAVE_LINUX_PATH_LOOKUP) -+#if defined(HAVE_LINUX_PATH_LOOKUP) -+# if defined(STRUCT_NAMEIDATA_HAS_PATH) - *dpp = dget(nd->path.dentry); - if (mnt) - *mnt = mntget(nd->path.mnt); - path_put(&nd->path); - # else -- *dpp = dget(path->dentry); -- if (mnt) -- *mnt = mntget(path->mnt); -- path_put(path); --# endif --#else - *dpp = dget(nd->dentry); - if (mnt) - *mnt = mntget(nd->mnt); - path_release(nd); -+# endif -+#else -+ *dpp = dget(path->dentry); -+ if (mnt) -+ *mnt = mntget(path->mnt); -+ path_put(path); - #endif - } - -diff --git a/src/cf/linux-test4.m4 b/src/cf/linux-test4.m4 -index 5f5ec5c..604d380 100644 ---- a/src/cf/linux-test4.m4 -+++ b/src/cf/linux-test4.m4 -@@ -278,9 +278,9 @@ AC_DEFUN([LINUX_IOP_I_PUT_LINK_TAKES_COOKIE], [ - #include ], - [struct inode _inode; - struct dentry _dentry; --struct nameidata _nameidata; -+struct nameidata *_nameidata; - void *cookie; --(void)_inode.i_op->put_link(&_dentry, &_nameidata, cookie);], -+(void)_inode.i_op->put_link(&_dentry, _nameidata, cookie);], - [IOP_PUT_LINK_TAKES_COOKIE], - [define if your iops.put_link takes a cookie], - []) diff -Nru openafs-1.6.10/debian/patches/0018-Linux-d_splice_alias-may-drop-inode-reference-on-err.patch openafs-1.6.11.1/debian/patches/0018-Linux-d_splice_alias-may-drop-inode-reference-on-err.patch --- openafs-1.6.10/debian/patches/0018-Linux-d_splice_alias-may-drop-inode-reference-on-err.patch 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/0018-Linux-d_splice_alias-may-drop-inode-reference-on-err.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -From: Marc Dionne -Date: Thu, 18 Dec 2014 08:43:22 -0500 -Subject: Linux: d_splice_alias may drop inode reference on error -MIME-Version: 1.0 -Content-Type: text/plain; charset="utf-8" -Content-Transfer-Encoding: 8bit - -d_splice_alias now drops the inode reference on error, so we -need to grab an extra one to make sure that the inode doesn't -go away, and release it when done if there was no error. - -For kernels that may not drop the reference, provide an -additional iput() within an ifdef. This could be hooked up -to a configure option to allow building a module for a kernel -that is known not to drop the reference on error. That hook -is not provided here. Affected kernels should be the early -3.17 ones (3.17 - 3.17.2); 3.16 and older kernels should not -return errors here. - -[kaduk@mit.edu add configure option to control behavior, which -is mandatory on non-buildbot linux systems] - -Reviewed-on: http://gerrit.openafs.org/11643 -Tested-by: BuildBot -Reviewed-by: Michael Laß -Reviewed-by: Jeffrey Altman -(cherry picked from commit 15260c7fdc5ac8fe9fb1797c8e383c665e9e0ccd) - -Change-Id: I288eb66c38386fcd6bae0da111d97e211cc5c995 -(cherry picked from commit 33856e051b1eae40544c23fd88eb21801aef98bb) ---- - acinclude.m4 | 26 ++++++++++++++++++++++++++ - src/afs/LINUX/osi_vnodeops.c | 29 ++++++++++++++++++++++++++--- - 2 files changed, 52 insertions(+), 3 deletions(-) - -diff --git a/acinclude.m4 b/acinclude.m4 -index 46d1215..2e7b0ed 100644 ---- a/acinclude.m4 -+++ b/acinclude.m4 -@@ -232,6 +232,26 @@ AC_ARG_ENABLE([linux-syscall-probing], - , - [enable_linux_syscall_probing="maybe"]) - -+AC_ARG_ENABLE([linux-d_splice_alias-extra-iput], -+ [AS_HELP_STRING([--enable-linux-d_splice_alias-extra-iput], -+ [Linux has introduced an incompatible behavior change in the -+ d_splice_alias function with no reliable way to determine which -+ behavior will be produced. If Linux commit -+ 51486b900ee92856b977eacfc5bfbe6565028070 (or equivalent) has been -+ applied to your kernel, disable this option. If that commit is -+ not present in your kernel, enable this option. We apologize -+ that you are required to know this about your running kernel.])], -+ [], -+ [case $system in -+ *-linux*) -+ AS_IF([test "x$LOGNAME" != "xbuildslave" && -+ test "x$LOGNAME" != "xbuildbot"], -+ [AC_ERROR([Linux users must specify either -+ --enable-linux-d_splice_alias-extra-iput or -+ --disable-linux-d_splice_alias-extra-iput])], -+ [enable_linux_d_splice_alias_extra_iput="no"]) -+ esac -+ ]) - AC_ARG_WITH([xslt-processor], - AS_HELP_STRING([--with-xslt-processor=ARG], - [which XSLT processor to use (possible choices are: libxslt, saxon, xalan-j, xsltproc)]), -@@ -916,6 +936,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - AC_CHECK_LINUX_FUNC([hlist_unhashed], - [#include ], - [hlist_unhashed(0);]) -+ AC_CHECK_LINUX_FUNC([ihold], -+ [#include ], -+ [ihold(NULL);]) - AC_CHECK_LINUX_FUNC([i_size_read], - [#include ], - [i_size_read(NULL);]) -@@ -1107,6 +1130,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*) - fi - : - fi -+ if test "x$enable_linux_d_splice_alias_extra_iput" = xyes; then -+ AC_DEFINE(D_SPLICE_ALIAS_LEAK_ON_ERROR, 1, [for internal use]) -+ fi - dnl Linux-only, but just enable always. - AC_DEFINE(AFS_CACHE_BYPASS, 1, [define to activate cache bypassing Unix client]) - esac -diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c -index 9a164ea..760c9b8 100644 ---- a/src/afs/LINUX/osi_vnodeops.c -+++ b/src/afs/LINUX/osi_vnodeops.c -@@ -1549,6 +1549,17 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) - ip->i_flags |= S_AUTOMOUNT; - #endif - } -+ /* -+ * Take an extra reference so the inode doesn't go away if -+ * d_splice_alias drops our reference on error. -+ */ -+ if (ip) -+#ifdef HAVE_LINUX_IHOLD -+ ihold(ip); -+#else -+ igrab(ip); -+#endif -+ - newdp = d_splice_alias(ip, dp); - - done: -@@ -1562,14 +1573,26 @@ afs_linux_lookup(struct inode *dip, struct dentry *dp) - * d_splice_alias can return an error (EIO) if there is an existing - * connected directory alias for this dentry. - */ -- if (!IS_ERR(newdp)) -+ if (!IS_ERR(newdp)) { -+ iput(ip); - return newdp; -- else { -+ } else { - d_add(dp, ip); -+ /* -+ * Depending on the kernel version, d_splice_alias may or may -+ * not drop the inode reference on error. If it didn't, do it -+ * here. -+ */ -+#if defined(D_SPLICE_ALIAS_LEAK_ON_ERROR) -+ iput(ip); -+#endif - return NULL; - } -- } else -+ } else { -+ if (ip) -+ iput(ip); - return ERR_PTR(afs_convert_code(code)); -+ } - } - - static int diff -Nru openafs-1.6.10/debian/patches/series openafs-1.6.11.1/debian/patches/series --- openafs-1.6.10/debian/patches/series 2015-02-04 18:00:40.000000000 +0000 +++ openafs-1.6.11.1/debian/patches/series 2015-05-15 15:01:24.000000000 +0000 @@ -1,18 +1,3 @@ 0001-userok.c-Fix-fixed-size-on-stack-path-buffers.patch 0002-Tweak-AFSDIR_PATH_MAX-definition.patch 0003-Add-dummy-exit-command-for-afsd-to-do-nothing.patch -0004-Linux-3.17-No-more-typedef-for-ctl_table.patch -0005-Linux-3.17-Deal-with-d_splice_alias-errors.patch -0006-LINUX-Check-afs_lookup-return-code-explicitly.patch -0007-LINUX-Avoid-d_revalidate-failure-on-mtpt-mismatch.patch -0008-Linux-3.18-d_invalidate-can-no-longer-return-an-erro.patch -0009-Linux-3.18-key_type-no-longer-has-a-match-op.patch -0010-LINUX-Avoid-check-for-key_type.match-existence.patch -0011-Unix-CM-Avoid-using-stale-DV-in-afs_StoreAllSegments.patch -0012-afs-Fix-some-afs_conn-overcounts.patch -0013-Linux-Move-code-to-reset-the-root-to-afs-LINUX.patch -0014-Linux-d_alias-becomes-d_u.d_alias.patch -0015-Linux-3.19-No-more-f_dentry.patch -0016-Linux-3.19-Use-mgs_iter-in-struct-msghdr.patch -0017-Linux-3.19-struct-nameidata-becomes-opaque.patch -0018-Linux-d_splice_alias-may-drop-inode-reference-on-err.patch diff -Nru openafs-1.6.10/doc/man-pages/pod1/aklog.pod openafs-1.6.11.1/doc/man-pages/pod1/aklog.pod --- openafs-1.6.10/doc/man-pages/pod1/aklog.pod 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/doc/man-pages/pod1/aklog.pod 2015-04-13 08:00:35.000000000 +0000 @@ -36,13 +36,15 @@ When a Kerberos 5 cross-realm trust is used, B looks up the AFS ID corresponding to the name (Kerberos principal) of the person invoking the command, and if the user doesn't exist and the -system:authuser@FOREIGN.REALM PTS group exists, then it attempts automatic +C PTS group exists, then it attempts automatic registration of the user with the foreign cell. The user is then added to -the system:authuser@FOREIGN.REALM PTS group if registration is successful. +the C PTS group if registration is successful. Automatic registration in the foreign cell will fail if the group quota -for the system:authuser@FOREIGN.REALM group is less than one. Each +for the C group is less than one. Each automatic registration decrements the group quota by one. +=head1 CAUTIONS + When using B, be aware that AFS uses the Kerberos v4 principal naming format, not the Kerberos v5 format, when referring to principals in PTS ACLs, F, and similar locations. AFS will internally map @@ -54,6 +56,15 @@ C, and for the principal C, refer to it as C. +The B mapping of Kerberos v5 principal to Kerberos v4 principal and +the determination that a Kerberos realm is foreign is performed in the +absence of the actual AFS server configuration. If the B mapping +of Kerberos v5 principal to Kerberos v4 principal or the foreign realm +determination is wrong, the PTS name-to-id lookup will produce the wrong +AFS ID for the user. The AFS ID is only used for display purposes and +should not be trusted. Use the B<-noprdb> switch to disable the PTS +name-to-id lookup. + =head1 OPTIONS =over 4 diff -Nru openafs-1.6.10/NEWS openafs-1.6.11.1/NEWS --- openafs-1.6.10/NEWS 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/NEWS 2015-04-13 08:00:35.000000000 +0000 @@ -1,5 +1,77 @@ User-Visible OpenAFS Changes +OpenAFS 1.6.11.1 + + Linux clients + + * Support kernels up to 4.0 (11760 11761) + + FreeBSD clients + + * Fixed kernel module build on systems with an updated clang which no + longer accepts the -mno-align-long-strings as a no-op (11809) + +OpenAFS 1.6.11 + + All platforms + + * Allow aklog to succeed creating native K5 tokens even when mapping + the K5 principal to a K4 one fails (11538) + + * Build fixes (11435 11636) + + All client platforms + + * Avoid a potential kernel panic due to connection reference overcounts + (11645) (RT #131885) + + * Avoid potential corruption of files written using memory mapped I/O + when the file is larger than the cache (11656) (RT #131976) + + Linux clients + + * Support kernels at least up to 3.19 (11549 11550 11569 11570 11595 + 11658..11662 11694 11752) + + Note: By default this excludes kernels 3.17 to 3.17.2, which will leak + an inode reference when an error occurs in d_splice_alias(). The + module will build and work, but leak kernel memory, leading to + performance degradation and eventually system failure due to + memory exhaustion. Since it's impossible to detect this condition + automatically, the switch --enable-linux-d_splice_alias-extra-iput + must be passed to configure when building the module for those + kernels. The same would be necessary for any kernel with backports + of commit 908790fa3b779d37365e6b28e3aa0f6e833020c3 or commit + 95ad5c291313b66a98a44dc92b57e0b37c1dd589 but not the fix in commit + 51486b900ee92856b977eacfc5bfbe6565028070 in the linux-stable repo + (git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git) or + the corresponding changes on other branches. + + * Fixed a regression introduced in OpenAFS release 1.6.10 which could + make the spurious "getcwd: cannot access parent directories" problem + return (11558 11568) (RT #131780) + + * Avoid leaking memory when scanning a corrupt directory (11707) + + OS X clients + + * Support OS X 10.10 "Yosemite" (11571 11572 11611) (RT #131946) + + Solaris clients + + * Avoid reading random data rather than correct cache content when using + ZFS as the cache file system on Solaris >= 11, and fix potential similar + problems on other platforms (11713 11714) + + FreeBSD + + * Build fix for releases >= 11.0 (11610) + + OpenBSD + + * Support release 5.4 (11700) + + OpenAFS 1.6.10 All platforms diff -Nru openafs-1.6.10/README openafs-1.6.11.1/README --- openafs-1.6.10/README 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/README 2015-04-13 08:00:35.000000000 +0000 @@ -303,6 +303,20 @@ by the option with debugging information. If --enable-debug is given, also do not strip binaries when installing them. + --enable-linux-d_splice_alias-extra-iput + Work around a kernel memory leak present in a few Linux kernels. + The only affected mainline kernels are 3.17 to 3.17.2, but this + switch will also be required should a distribution backport commit + 908790fa3b779d37365e6b28e3aa0f6e833020c3 or commit + 95ad5c291313b66a98a44dc92b57e0b37c1dd589 but not the fix in commit + 51486b900ee92856b977eacfc5bfbe6565028070 from the linux-stable repo + (git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git) or + the corresponding changes on other branches. This is impossible to + detect automatically. Without this switch, the openafs module will + build and work even with affected kernels. But it will leak kernel + memory, leading to performance degradation and eventually system + failure due to memory exhaustion. + --enable-linux-syscall-probing OpenAFS now uses keyrings to manage PAGs by default on Linux, which does not require hooking into the system call table. On older diff -Nru openafs-1.6.10/src/afs/afs_bypasscache.c openafs-1.6.11.1/src/afs/afs_bypasscache.c --- openafs-1.6.10/src/afs/afs_bypasscache.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/afs_bypasscache.c 2015-04-13 08:00:35.000000000 +0000 @@ -637,6 +637,7 @@ } else { afs_warn("BYPASS: StartRXAFS_FetchData failed: %d\n", code); unlock_and_release_pages(auio); + afs_PutConn(tc, rxconn, SHARED_LOCK); goto done; } if (code == 0) { diff -Nru openafs-1.6.10/src/afs/afs_daemons.c openafs-1.6.11.1/src/afs/afs_daemons.c --- openafs-1.6.10/src/afs/afs_daemons.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/afs_daemons.c 2015-04-13 08:00:35.000000000 +0000 @@ -363,71 +363,14 @@ * count to zero and fs checkv is executed when the current * directory is /afs. */ -#ifdef AFS_LINUX20_ENV - { - struct vrequest *treq = NULL; - struct vattr vattr; - cred_t *credp; - struct dentry *dp; - struct vcache *vcp; - - afs_rootFid.Fid.Volume = volid; - afs_rootFid.Fid.Vnode = 1; - afs_rootFid.Fid.Unique = 1; - - credp = crref(); - if (afs_CreateReq(&treq, credp)) - goto out; - vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); - if (!vcp) - goto out; - afs_getattr(vcp, &vattr, credp); - afs_fill_inode(AFSTOV(vcp), &vattr); - - dp = d_find_alias(AFSTOV(afs_globalVp)); - -#if defined(AFS_LINUX24_ENV) -#if defined(HAVE_DCACHE_LOCK) - spin_lock(&dcache_lock); +#ifdef AFS_LINUX22_ENV + osi_ResetRootVCache(volid); #else - spin_lock(&AFSTOV(vcp)->i_lock); -#endif -#if defined(AFS_LINUX26_ENV) - spin_lock(&dp->d_lock); -#endif -#endif -#if defined(D_ALIAS_IS_HLIST) - hlist_del_init(&dp->d_alias); - hlist_add_head(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); -#else - list_del_init(&dp->d_alias); - list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); -#endif - dp->d_inode = AFSTOV(vcp); -#if defined(AFS_LINUX24_ENV) -#if defined(AFS_LINUX26_ENV) - spin_unlock(&dp->d_lock); -#endif -#if defined(HAVE_DCACHE_LOCK) - spin_unlock(&dcache_lock); -#else - spin_unlock(&AFSTOV(vcp)->i_lock); -#endif -#endif - dput(dp); - - AFS_FAST_RELE(afs_globalVp); - afs_globalVp = vcp; - out: - crfree(credp); - afs_DestroyReq(treq); - } -#else -#ifdef AFS_DARWIN80_ENV +# ifdef AFS_DARWIN80_ENV afs_PutVCache(afs_globalVp); -#else +# else AFS_FAST_RELE(afs_globalVp); -#endif +# endif afs_globalVp = 0; #endif } diff -Nru openafs-1.6.10/src/afs/afs_dcache.c openafs-1.6.11.1/src/afs/afs_dcache.c --- openafs-1.6.10/src/afs/afs_dcache.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/afs_dcache.c 2015-04-13 08:00:35.000000000 +0000 @@ -2399,6 +2399,13 @@ afs_PutDCache(tdc); tdc = 0; ReleaseReadLock(&avc->lock); + + if (tc) { + /* If we have a connection, we must put it back, + * since afs_Analyze will not be called here. */ + afs_PutConn(tc, rxconn, SHARED_LOCK); + } + slowPass = 1; goto RetryGetDCache; } diff -Nru openafs-1.6.10/src/afs/afs_segments.c openafs-1.6.11.1/src/afs/afs_segments.c --- openafs-1.6.10/src/afs/afs_segments.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/afs_segments.c 2015-04-13 08:00:35.000000000 +0000 @@ -174,8 +174,6 @@ AFS_STATCNT(afs_StoreAllSegments); - hset(oldDV, avc->f.m.DataVersion); - hset(newDV, avc->f.m.DataVersion); hash = DVHash(&avc->f.fid); foreign = (avc->f.states & CForeign); dcList = (struct dcache **)osi_AllocLargeSpace(AFS_LRALLOCSIZ); @@ -213,6 +211,14 @@ /*printf("Net down in afs_StoreSegments\n");*/ return ENETDOWN; } + + /* + * Can't do this earlier because osi_VM_StoreAllSegments drops locks + * and can indirectly do some stores that increase the DV. + */ + hset(oldDV, avc->f.m.DataVersion); + hset(newDV, avc->f.m.DataVersion); + ConvertWToSLock(&avc->lock); /* diff -Nru openafs-1.6.10/src/afs/AIX/osi_misc.c openafs-1.6.11.1/src/afs/AIX/osi_misc.c --- openafs-1.6.10/src/afs/AIX/osi_misc.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/AIX/osi_misc.c 2015-04-13 08:00:35.000000000 +0000 @@ -97,6 +97,9 @@ struct iovec uiovector; int code; + memset(&uio_struct, 0, sizeof(uio_struct)); + memset(&uiovector, 0, sizeof(uiovector)); + AFS_STATCNT(gop_rdwr); /* Set up the uio structure */ uiovector.iov_base = (caddr_t) base; diff -Nru openafs-1.6.10/src/afs/AIX/osi_vnodeops.c openafs-1.6.11.1/src/afs/AIX/osi_vnodeops.c --- openafs-1.6.10/src/afs/AIX/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/AIX/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -643,6 +643,9 @@ static int fclear_init = 0; struct vcache *avc = VTOAFS(vp); + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(afs_gn_fclear); if (!fclear_init) { memset(zero_buffer, 0, PAGESIZE); @@ -919,6 +922,9 @@ struct iovec tvec[16]; /* Should have access to #define */ afs_int32 tsize; + memset(&tuio, 0, sizeof(tuio)); + memset(&tvec, 0, sizeof(tvec)); + mixed = 1; finalOffset = xfrOffset + xfrSize; tsize = (afs_size_t) (xfrOffset + xfrSize - afs_vmMappingEnd); @@ -1086,6 +1092,9 @@ struct uio tuio; struct iovec tvec[16]; /* Should have access to #define */ + memset(&tuio, 0, sizeof(tuio)); + memset(&tvec, 0, sizeof(tvec)); + /* Purge dirty chunks of file if there are too many dirty chunks. * Inside the write loop, we only do this at a chunk boundary. * Clean up partial chunk if necessary at end of loop. diff -Nru openafs-1.6.10/src/afs/DARWIN/osi_vnodeops.c openafs-1.6.11.1/src/afs/DARWIN/osi_vnodeops.c --- openafs-1.6.10/src/afs/DARWIN/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/DARWIN/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -837,17 +837,20 @@ int flags = ap->a_flags; struct ucred *cred; vm_offset_t ioaddr; + int code; + struct vcache *tvc = VTOAFS(vp); + int nocommit = flags & UPL_NOCOMMIT; #ifdef AFS_DARWIN80_ENV struct uio *uio; #else struct uio auio; struct iovec aiov; struct uio *uio = &auio; + + memset(&auio, 0, sizeof(auio)); + memset(&aiov, 0, sizeof(aiov)); #endif - int nocommit = flags & UPL_NOCOMMIT; - int code; - struct vcache *tvc = VTOAFS(vp); #ifndef AFS_DARWIN80_ENV if (UBCINVALID(vp)) { #if DIAGNOSTIC @@ -982,18 +985,21 @@ int flags = ap->a_flags; struct ucred *cred; vm_offset_t ioaddr; + int nocommit = flags & UPL_NOCOMMIT; + int iosize; + int code; + struct vcache *tvc = VTOAFS(vp); #ifdef AFS_DARWIN80_ENV struct uio *uio; #else struct uio auio; struct iovec aiov; struct uio *uio = &auio; + + memset(&auio, 0, sizeof(auio)); + memset(&aiov, 0, sizeof(aiov)); #endif - int nocommit = flags & UPL_NOCOMMIT; - int iosize; - int code; - struct vcache *tvc = VTOAFS(vp); #ifndef AFS_DARWIN80_ENV if (UBCINVALID(vp)) { #if DIAGNOSTIC diff -Nru openafs-1.6.10/src/afs/FBSD/osi_vfsops.c openafs-1.6.11.1/src/afs/FBSD/osi_vfsops.c --- openafs-1.6.10/src/afs/FBSD/osi_vfsops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/FBSD/osi_vfsops.c 2015-04-13 08:00:35.000000000 +0000 @@ -49,7 +49,11 @@ int code; int offset = AFS_SYSCALL; #if defined(AFS_FBSD90_ENV) || defined(AFS_FBSD82_ENV) +# if defined(AFS_FBSD_110_ENV) + code = syscall_register(&offset, &afs_sysent, &old_sysent, 0); +# else code = syscall_register(&offset, &afs_sysent, &old_sysent); +# endif if (code) { printf("AFS_SYSCALL in use, error %i. aborting\n", code); return code; diff -Nru openafs-1.6.10/src/afs/FBSD/osi_vnodeops.c openafs-1.6.11.1/src/afs/FBSD/osi_vnodeops.c --- openafs-1.6.10/src/afs/FBSD/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/FBSD/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -801,6 +801,9 @@ struct vnode *vp; struct vcache *avc; + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + vp = ap->a_vp; avc = VTOAFS(vp); if ((object = vp->v_object) == NULL) { @@ -993,6 +996,9 @@ struct vnode *vp; struct vcache *avc; + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + vp = ap->a_vp; avc = VTOAFS(vp); /* Perhaps these two checks should just be KASSERTs instead... */ diff -Nru openafs-1.6.10/src/afs/HPUX/osi_vnodeops.c openafs-1.6.11.1/src/afs/HPUX/osi_vnodeops.c --- openafs-1.6.10/src/afs/HPUX/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/HPUX/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -222,6 +222,9 @@ struct iovec iov; struct uio uio; + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(afs_bread); fsbsize = vp->v_vfsp->vfs_bsize; offset = lbn * fsbsize; @@ -2085,6 +2088,9 @@ dir_off_t offset; uint64_t tmp_offset; + memset(&auio, 0, sizeof(auio)); + memset(&aiov, 0, sizeof(aiov)); + count = uiop->uio_resid; /* Allocate temporary space for format conversion */ ibuf = kmem_alloc(2 * count); /* overkill - fix later */ @@ -2151,6 +2157,9 @@ int count, outcount; dir_off_t offset; + memset(&auio, 0, sizeof(auio)); + memset(&aiov, 0, sizeof(aiov)); + count = uiop->uio_resid; /* Allocate temporary space for format conversion */ ibuf = kmem_alloc(2 * count); /* overkill - fix later */ @@ -2521,6 +2530,9 @@ extern caddr_t hdl_kmap_bp(); struct kthread *t = u.u_kthreadp; + memset(&tuio, 0, sizeof(tuio)); + memset(&tiovec, 0, sizeof(tiovec)); + AFS_STATCNT(afs_hp_strategy); /* * hdl_kmap_bp() saves "b_bcount" and restores it in hdl_remap_bp() after diff -Nru openafs-1.6.10/src/afs/LINUX/osi_compat.h openafs-1.6.11.1/src/afs/LINUX/osi_compat.h --- openafs-1.6.10/src/afs/LINUX/osi_compat.h 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_compat.h 2015-04-13 08:00:35.000000000 +0000 @@ -37,6 +37,16 @@ typedef struct path afs_linux_path_t; #endif +#if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) +# define d_alias d_u.d_alias +#endif + +#if defined(STRUCT_FILE_HAS_F_PATH) +# if !defined(f_dentry) +# define f_dentry f_path.dentry +# endif +#endif + #ifndef HAVE_LINUX_DO_SYNC_READ static inline int do_sync_read(struct file *fp, char *buf, size_t count, loff_t *offp) { @@ -465,23 +475,23 @@ #else afs_get_dentry_ref(afs_linux_path_t *path, struct vfsmount **mnt, struct dentry **dpp) { #endif -#if defined(STRUCT_NAMEIDATA_HAS_PATH) -# if defined(HAVE_LINUX_PATH_LOOKUP) +#if defined(HAVE_LINUX_PATH_LOOKUP) +# if defined(STRUCT_NAMEIDATA_HAS_PATH) *dpp = dget(nd->path.dentry); if (mnt) *mnt = mntget(nd->path.mnt); path_put(&nd->path); # else - *dpp = dget(path->dentry); - if (mnt) - *mnt = mntget(path->mnt); - path_put(path); -# endif -#else *dpp = dget(nd->dentry); if (mnt) *mnt = mntget(nd->mnt); path_release(nd); +# endif +#else + *dpp = dget(path->dentry); + if (mnt) + *mnt = mntget(path->mnt); + path_put(path); #endif } @@ -557,4 +567,15 @@ #endif } +static inline int +afs_d_invalidate(struct dentry *dp) +{ +#if defined(D_INVALIDATE_IS_VOID) + d_invalidate(dp); + return 0; +#else + return d_invalidate(dp); +#endif +} + #endif /* AFS_LINUX_OSI_COMPAT_H */ diff -Nru openafs-1.6.10/src/afs/LINUX/osi_file.c openafs-1.6.11.1/src/afs/LINUX/osi_file.c --- openafs-1.6.10/src/afs/LINUX/osi_file.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_file.c 2015-04-13 08:00:35.000000000 +0000 @@ -209,6 +209,9 @@ struct iovec iov; afs_int32 code; + memset(&auio, 0, sizeof(auio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_Read); /* @@ -250,6 +253,9 @@ struct iovec iov; afs_int32 code; + memset(&auio, 0, sizeof(auio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_Write); if (!afile) { diff -Nru openafs-1.6.10/src/afs/LINUX/osi_groups.c openafs-1.6.11.1/src/afs/LINUX/osi_groups.c --- openafs-1.6.10/src/afs/LINUX/osi_groups.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_groups.c 2015-04-13 08:00:35.000000000 +0000 @@ -498,10 +498,18 @@ return code; } +#if !defined(STRUCT_KEY_TYPE_HAS_MATCH_PREPARSE) +/* Note that we only define a ->match function if struct + * key_type.match_preparse does _not_ exist. If key_type.match_preparse does + * exist, we would use that to specify an alternative comparison function; but + * since we just rely on default behavior, we don't need to actually specify + * one. But for kernels with no such match_preparse function, we need to + * specify a 'match' function, since there is no default. */ static int afs_pag_match(const struct key *key, const void *description) { return strcmp(key->description, description) == 0; } +#endif static void afs_pag_destroy(struct key *key) { @@ -527,7 +535,9 @@ #else .instantiate = afs_pag_instantiate, #endif +#if !defined(STRUCT_KEY_TYPE_HAS_MATCH_PREPARSE) .match = afs_pag_match, +#endif .destroy = afs_pag_destroy, }; diff -Nru openafs-1.6.10/src/afs/LINUX/osi_prototypes.h openafs-1.6.11.1/src/afs/LINUX/osi_prototypes.h --- openafs-1.6.10/src/afs/LINUX/osi_prototypes.h 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_prototypes.h 2015-04-13 08:00:35.000000000 +0000 @@ -79,6 +79,9 @@ extern void osi_VM_Truncate(struct vcache *avc, int alen, afs_ucred_t *acred); +/* osi_vcache.c */ +extern void osi_ResetRootVCache(afs_uint32 volid); + /* osi_vfsops.c */ extern void vattr2inode(struct inode *ip, struct vattr *vp); extern int afs_init_inodecache(void); diff -Nru openafs-1.6.10/src/afs/LINUX/osi_sysctl.c openafs-1.6.11.1/src/afs/LINUX/osi_sysctl.c --- openafs-1.6.10/src/afs/LINUX/osi_sysctl.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_sysctl.c 2015-04-13 08:00:35.000000000 +0000 @@ -34,7 +34,7 @@ #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 @@ {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 -Nru openafs-1.6.10/src/afs/LINUX/osi_vcache.c openafs-1.6.11.1/src/afs/LINUX/osi_vcache.c --- openafs-1.6.10/src/afs/LINUX/osi_vcache.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_vcache.c 2015-04-13 08:00:35.000000000 +0000 @@ -13,6 +13,8 @@ #include "afs/sysincludes.h" /*Standard vendor system headers */ #include "afsincludes.h" /*AFS-based standard headers */ +#include "osi_compat.h" + int osi_TryEvictVCache(struct vcache *avc, int *slept, int defersleep) { int code; @@ -71,7 +73,7 @@ dget(dentry); spin_unlock(&inode->i_lock); - if (d_invalidate(dentry) == -EBUSY) { + if (afs_d_invalidate(dentry) == -EBUSY) { dput(dentry); /* perhaps lock and try to continue? (use cur as head?) */ goto inuse; @@ -141,3 +143,64 @@ vSetType(avc, VREG); } +/** + * osi_ResetRootVCache - Reset the root vcache + * Reset the dentry associated with the afs root. + * Called from afs_CheckRootVolume when we notice that + * the root volume ID has changed. + * + * @volid: volume ID for the afs root + */ +void +osi_ResetRootVCache(afs_uint32 volid) +{ + struct vrequest *treq = NULL; + struct vattr vattr; + cred_t *credp; + struct dentry *dp; + struct vcache *vcp; + struct inode *root = AFSTOV(afs_globalVp); + + afs_rootFid.Fid.Volume = volid; + afs_rootFid.Fid.Vnode = 1; + afs_rootFid.Fid.Unique = 1; + + credp = crref(); + if (afs_CreateReq(&treq, credp)) + goto out; + vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); + if (!vcp) + goto out; + afs_getattr(vcp, &vattr, credp); + afs_fill_inode(AFSTOV(vcp), &vattr); + + dp = d_find_alias(root); + +#if defined(HAVE_DCACHE_LOCK) + spin_lock(&dcache_lock); +#else + spin_lock(&AFSTOV(vcp)->i_lock); +#endif + spin_lock(&dp->d_lock); +#if defined(D_ALIAS_IS_HLIST) + hlist_del_init(&dp->d_alias); + hlist_add_head(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); +#else + list_del_init(&dp->d_alias); + list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); +#endif + dp->d_inode = AFSTOV(vcp); + spin_unlock(&dp->d_lock); +#if defined(HAVE_DCACHE_LOCK) + spin_unlock(&dcache_lock); +#else + spin_unlock(&AFSTOV(vcp)->i_lock); +#endif + dput(dp); + + AFS_RELE(root); + afs_globalVp = vcp; +out: + crfree(credp); + afs_DestroyReq(treq); +} diff -Nru openafs-1.6.10/src/afs/LINUX/osi_vnodeops.c openafs-1.6.11.1/src/afs/LINUX/osi_vnodeops.c --- openafs-1.6.10/src/afs/LINUX/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -392,10 +392,8 @@ if (code) { afs_warn("Corrupt directory (inode %lx, dirpos %d)", (unsigned long)&tdc->f.inode, dirpos); - ReleaseSharedLock(&avc->lock); - afs_PutDCache(tdc); code = -ENOENT; - goto out; + goto unlock_out; } ino = afs_calc_inum(avc->f.fid.Cell, avc->f.fid.Fid.Volume, @@ -461,7 +459,9 @@ #else fp->f_pos = (loff_t) offset; #endif + code = 0; +unlock_out: ReleaseReadLock(&tdc->lock); afs_PutDCache(tdc); UpgradeSToWLock(&avc->lock, 813); @@ -469,7 +469,6 @@ avc->dcreaddir = 0; avc->readdir_pid = 0; ReleaseSharedLock(&avc->lock); - code = 0; out: afs_PutFakeStat(&fakestat); @@ -943,17 +942,18 @@ cred_t *credp; struct dentry *parent; struct vcache *vcp, *pvc, *avc = NULL; + int code; vcp = VTOAFS(dp->d_inode); parent = dget_parent(dp); pvc = VTOAFS(parent->d_inode); - if (vcp->mvid->Fid.Volume != pvc->f.fid.Fid.Volume) { /* bad parent */ + if (!vcp->mvid || vcp->mvid->Fid.Volume != pvc->f.fid.Fid.Volume) { /* bad parent */ credp = crref(); /* force a lookup, so vcp->mvid is fixed up */ - afs_lookup(pvc, (char *)dp->d_name.name, &avc, credp); - if (!avc || vcp != avc) { /* bad, very bad.. */ + code = afs_lookup(pvc, (char *)dp->d_name.name, &avc, credp); + if (code || vcp != avc) { /* bad, very bad.. */ afs_Trace4(afs_iclSetp, CM_TRACE_TMP_1S3L, ICL_TYPE_STRING, "check_bad_parent: bad pointer returned from afs_lookup origvc newvc dentry", ICL_TYPE_POINTER, vcp, ICL_TYPE_POINTER, avc, @@ -1230,10 +1230,37 @@ if (hgetlo(pvcp->f.m.DataVersion) > dp->d_time || !(vcp->f.states & CStatd)) { struct vattr *vattr = NULL; int code; + int lookup_good; credp = crref(); code = afs_lookup(pvcp, (char *)dp->d_name.name, &tvc, credp); - if (!tvc || tvc != vcp) { + + if (code) { + /* We couldn't perform the lookup, so we're not okay. */ + lookup_good = 0; + + } else if (tvc == vcp) { + /* We got back the same vcache, so we're good. */ + lookup_good = 1; + + } else if (tvc == VTOAFS(dp->d_inode)) { + /* We got back the same vcache, so we're good. This is + * different from the above case, because sometimes 'vcp' is + * not the same as the vcache for dp->d_inode, if 'vcp' was a + * mtpt and we evaluated it to a root dir. In rare cases, + * afs_lookup might not evalute the mtpt when we do, or vice + * versa, so the previous case will not succeed. But this is + * still 'correct', so make sure not to mark the dentry as + * invalid; it still points to the same thing! */ + lookup_good = 1; + + } else { + /* We got back a different file, so we're definitely not + * okay. */ + lookup_good = 0; + } + + if (!lookup_good) { dput(parent); /* Force unhash; the name doesn't point to this file * anymore. */ @@ -1478,7 +1505,7 @@ AFS_GLOCK(); code = afs_lookup(VTOAFS(dip), (char *)comp, &vcp, credp); - if (vcp) { + if (!code) { struct vattr *vattr = NULL; struct vcache *parent_vc = VTOAFS(dip); @@ -1521,6 +1548,17 @@ ip->i_flags |= S_AUTOMOUNT; #endif } + /* + * Take an extra reference so the inode doesn't go away if + * d_splice_alias drops our reference on error. + */ + if (ip) +#ifdef HAVE_LINUX_IHOLD + ihold(ip); +#else + igrab(ip); +#endif + newdp = d_splice_alias(ip, dp); done: @@ -1529,10 +1567,31 @@ /* 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)) { + iput(ip); + return newdp; + } else { + d_add(dp, ip); + /* + * Depending on the kernel version, d_splice_alias may or may + * not drop the inode reference on error. If it didn't, do it + * here. + */ +#if defined(D_SPLICE_ALIAS_LEAK_ON_ERROR) + iput(ip); +#endif + return NULL; + } + } else { + if (ip) + iput(ip); return ERR_PTR(afs_convert_code(code)); + } } static int @@ -1794,6 +1853,9 @@ struct uio tuio; struct iovec iov; + memset(&tuio, 0, sizeof(tuio)); + memset(&iov, 0, sizeof(iov)); + setup_uio(&tuio, &iov, target, (afs_offs_t) 0, maxlen, UIO_READ, seg); code = afs_readlink(VTOAFS(ip), &tuio, credp); crfree(credp); @@ -2546,6 +2608,9 @@ struct iovec iovec; int f_flags = 0; + memset(&tuio, 0, sizeof(tuio)); + memset(&iovec, 0, sizeof(iovec)); + buffer = kmap(pp) + offset; base = page_offset(pp) + offset; @@ -2989,7 +3054,9 @@ if (vattr) vattr2inode(ip, vattr); +#ifdef STRUCT_ADDRESS_SPACE_HAS_BACKING_DEV_INFO ip->i_mapping->backing_dev_info = afs_backing_dev_info; +#endif /* Reset ops if symlink or directory. */ if (S_ISREG(ip->i_mode)) { ip->i_op = &afs_file_iops; diff -Nru openafs-1.6.10/src/afs/LINUX24/osi_file.c openafs-1.6.11.1/src/afs/LINUX24/osi_file.c --- openafs-1.6.10/src/afs/LINUX24/osi_file.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX24/osi_file.c 2015-04-13 08:00:35.000000000 +0000 @@ -190,6 +190,9 @@ struct iovec iov; afs_int32 code; + memset(&auio, 0, sizeof(auio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_Read); /* @@ -231,6 +234,9 @@ struct iovec iov; afs_int32 code; + memset(&auio, 0, sizeof(auio)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_Write); if (!afile) { diff -Nru openafs-1.6.10/src/afs/LINUX24/osi_prototypes.h openafs-1.6.11.1/src/afs/LINUX24/osi_prototypes.h --- openafs-1.6.10/src/afs/LINUX24/osi_prototypes.h 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX24/osi_prototypes.h 2015-04-13 08:00:35.000000000 +0000 @@ -69,6 +69,9 @@ extern int osi_sysctl_init(void); extern void osi_sysctl_clean(void); +/* osi_vcache.c */ +extern void osi_ResetRootVCache(afs_uint32 volid); + /* osi_vm.c */ extern int osi_VM_FlushVCache(struct vcache *avc, int *slept); extern void osi_VM_TryToSmush(struct vcache *avc, afs_ucred_t *acred, diff -Nru openafs-1.6.10/src/afs/LINUX24/osi_vcache.c openafs-1.6.11.1/src/afs/LINUX24/osi_vcache.c --- openafs-1.6.10/src/afs/LINUX24/osi_vcache.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX24/osi_vcache.c 2015-04-13 08:00:35.000000000 +0000 @@ -119,3 +119,39 @@ vSetType(avc, VREG); } +void +osi_ResetRootVCache(afs_uint32 volid) +{ + struct vrequest *treq = NULL; + struct vattr vattr; + cred_t *credp; + struct dentry *dp; + struct vcache *vcp; + + afs_rootFid.Fid.Volume = volid; + afs_rootFid.Fid.Vnode = 1; + afs_rootFid.Fid.Unique = 1; + + credp = crref(); + if (afs_CreateReq(&treq, credp)) + goto out; + vcp = afs_GetVCache(&afs_rootFid, treq, NULL, NULL); + if (!vcp) + goto out; + afs_getattr(vcp, &vattr, credp); + afs_fill_inode(AFSTOV(vcp), &vattr); + + dp = d_find_alias(AFSTOV(afs_globalVp)); + spin_lock(&dcache_lock); + list_del_init(&dp->d_alias); + list_add(&dp->d_alias, &(AFSTOV(vcp)->i_dentry)); + dp->d_inode = AFSTOV(vcp); + spin_unlock(&dcache_lock); + dput(dp); + + AFS_FAST_RELE(afs_globalVp); + afs_globalVp = vcp; +out: + crfree(credp); + afs_DestroyReq(treq); +} diff -Nru openafs-1.6.10/src/afs/LINUX24/osi_vnodeops.c openafs-1.6.11.1/src/afs/LINUX24/osi_vnodeops.c --- openafs-1.6.10/src/afs/LINUX24/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/LINUX24/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -1544,6 +1544,9 @@ struct uio tuio; struct iovec iov; + memset(&tuio, 0, sizeof(tuio)); + memset(&iov, 0, sizeof(iov)); + setup_uio(&tuio, &iov, target, (afs_offs_t) 0, maxlen, UIO_READ, seg); code = afs_readlink(VTOAFS(ip), &tuio, credp); crfree(credp); @@ -1812,6 +1815,9 @@ struct iovec iovec; int f_flags = 0; + memset(&tuio, 0, sizeof(tuio)); + memset(&iovec, 0, sizeof(iovec)); + buffer = kmap(pp) + offset; base = (((loff_t) pp->index) << PAGE_CACHE_SHIFT) + offset; @@ -1921,6 +1927,9 @@ struct uio tuio; struct iovec iovec; + memset(&tuio, 0, sizeof(tuio)); + memset(&iovec, 0, sizeof(iovec)); + set_bit(PG_locked, &pp->flags); credp = crref(); diff -Nru openafs-1.6.10/src/afs/NBSD/osi_vnodeops.c openafs-1.6.11.1/src/afs/NBSD/osi_vnodeops.c --- openafs-1.6.10/src/afs/NBSD/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/NBSD/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -1035,6 +1035,9 @@ long len = abp->b_bcount; int code; + memset(&tuio, 0, sizeof(tuio)); + memset(&tiovec, 0, sizeof(tiovec)); + AFS_STATCNT(afs_strategy); tuio.afsio_iov = tiovec; diff -Nru openafs-1.6.10/src/afs/OBSD/osi_vnodeops.c openafs-1.6.11.1/src/afs/OBSD/osi_vnodeops.c --- openafs-1.6.10/src/afs/OBSD/osi_vnodeops.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/OBSD/osi_vnodeops.c 2015-04-13 08:00:35.000000000 +0000 @@ -1033,6 +1033,9 @@ long len = abp->b_bcount; int code; + memset(&tuio, 0, sizeof(tuio)); + memset(&tiovec, 0, sizeof(tiovec)); + AFS_STATCNT(afs_strategy); tuio.afsio_iov = tiovec; diff -Nru openafs-1.6.10/src/afs/SOLARIS/osi_file.c openafs-1.6.11.1/src/afs/SOLARIS/osi_file.c --- openafs-1.6.10/src/afs/SOLARIS/osi_file.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/SOLARIS/osi_file.c 2015-04-13 08:00:35.000000000 +0000 @@ -327,11 +327,7 @@ */ AFS_GUNLOCK(); #ifdef AFS_SUN510_ENV - { - caller_context_t ct; - - code = VOP_SETATTR(afile->vnode, &tvattr, 0, afs_osi_credp, &ct); - } + code = VOP_SETATTR(afile->vnode, &tvattr, 0, afs_osi_credp, NULL); #else code = VOP_SETATTR(afile->vnode, &tvattr, 0, afs_osi_credp); #endif diff -Nru openafs-1.6.10/src/afs/VNOPS/afs_vnop_read.c openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_read.c --- openafs-1.6.10/src/afs/VNOPS/afs_vnop_read.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_read.c 2015-04-13 08:00:35.000000000 +0000 @@ -54,15 +54,16 @@ afs_int32 trimlen; struct dcache *tdc = 0; afs_int32 error, trybusy = 1; + afs_int32 code; + struct vrequest *treq = NULL; #ifdef AFS_DARWIN80_ENV uio_t tuiop = NULL; #else struct uio tuio; struct uio *tuiop = &tuio; struct iovec *tvec; + memset(&tuio, 0, sizeof(tuio)); #endif - afs_int32 code; - struct vrequest *treq = NULL; AFS_STATCNT(afs_MemRead); if (avc->vc_error) @@ -93,6 +94,7 @@ #ifndef AFS_DARWIN80_ENV tvec = (struct iovec *)osi_AllocSmallSpace(sizeof(struct iovec)); + memset(tvec, 0, sizeof(struct iovec)); #endif totalLength = AFS_UIO_RESID(auio); filePos = AFS_UIO_OFFSET(auio); @@ -513,17 +515,18 @@ afs_int32 trimlen; struct dcache *tdc = 0; afs_int32 error; + struct osi_file *tfile; + afs_int32 code; + int trybusy = 1; + struct vrequest *treq = NULL; #ifdef AFS_DARWIN80_ENV uio_t tuiop=NULL; #else struct uio tuio; struct uio *tuiop = &tuio; struct iovec *tvec; + memset(&tuio, 0, sizeof(tuio)); #endif - struct osi_file *tfile; - afs_int32 code; - int trybusy = 1; - struct vrequest *treq = NULL; AFS_STATCNT(afs_UFSRead); if (avc && avc->vc_error) @@ -562,6 +565,7 @@ #ifndef AFS_DARWIN80_ENV tvec = (struct iovec *)osi_AllocSmallSpace(sizeof(struct iovec)); + memset(tvec, 0, sizeof(struct iovec)); #endif totalLength = AFS_UIO_RESID(auio); filePos = AFS_UIO_OFFSET(auio); @@ -862,13 +866,9 @@ #elif defined(AFS_SUN5_ENV) AFS_GUNLOCK(); #ifdef AFS_SUN510_ENV - { - caller_context_t ct; - - VOP_RWLOCK(tfile->vnode, 0, &ct); - code = VOP_READ(tfile->vnode, &tuio, 0, afs_osi_credp, &ct); - VOP_RWUNLOCK(tfile->vnode, 0, &ct); - } + VOP_RWLOCK(tfile->vnode, 0, NULL); + code = VOP_READ(tfile->vnode, &tuio, 0, afs_osi_credp, NULL); + VOP_RWUNLOCK(tfile->vnode, 0, NULL); #else VOP_RWLOCK(tfile->vnode, 0); code = VOP_READ(tfile->vnode, &tuio, 0, afs_osi_credp); diff -Nru openafs-1.6.10/src/afs/VNOPS/afs_vnop_strategy.c openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_strategy.c --- openafs-1.6.10/src/afs/VNOPS/afs_vnop_strategy.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_strategy.c 2015-04-13 08:00:35.000000000 +0000 @@ -46,6 +46,9 @@ afs_ucred_t *credp = u.u_cred; #endif + memset(&tuio, 0, sizeof(tuio)); + memset(&tiovec, 0, sizeof(tiovec)); + AFS_STATCNT(afs_ustrategy); #ifdef AFS_AIX41_ENV /* diff -Nru openafs-1.6.10/src/afs/VNOPS/afs_vnop_write.c openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_write.c --- openafs-1.6.10/src/afs/VNOPS/afs_vnop_write.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afs/VNOPS/afs_vnop_write.c 2015-04-13 08:00:35.000000000 +0000 @@ -113,15 +113,16 @@ #if defined(AFS_FBSD_ENV) || defined(AFS_DFBSD_ENV) struct vnode *vp = AFSTOV(avc); #endif + afs_int32 code; + struct vrequest *treq = NULL; #ifdef AFS_DARWIN80_ENV uio_t tuiop = NULL; #else struct uio tuio; struct uio *tuiop = &tuio; struct iovec *tvec; /* again, should have define */ + memset(&tuio, 0, sizeof(tuio)); #endif - afs_int32 code; - struct vrequest *treq = NULL; AFS_STATCNT(afs_MemWrite); if (avc->vc_error) @@ -201,6 +202,7 @@ avc->f.states |= CDirty; #ifndef AFS_DARWIN80_ENV tvec = (struct iovec *)osi_AllocSmallSpace(sizeof(struct iovec)); + memset(tvec, 0, sizeof(struct iovec)); #endif while (totalLength > 0) { tdc = afs_ObtainDCacheForWriting(avc, filePos, totalLength, treq, @@ -332,16 +334,17 @@ #if defined(AFS_FBSD_ENV) || defined(AFS_DFBSD_ENV) struct vnode *vp = AFSTOV(avc); #endif + struct osi_file *tfile; + afs_int32 code; + struct vrequest *treq = NULL; #ifdef AFS_DARWIN80_ENV uio_t tuiop = NULL; #else struct uio tuio; struct uio *tuiop = &tuio; struct iovec *tvec; /* again, should have define */ + memset(&tuio, 0, sizeof(tuio)); #endif - struct osi_file *tfile; - afs_int32 code; - struct vrequest *treq = NULL; AFS_STATCNT(afs_UFSWrite); if (avc->vc_error) @@ -424,6 +427,7 @@ avc->f.states |= CDirty; #ifndef AFS_DARWIN80_ENV tvec = (struct iovec *)osi_AllocSmallSpace(sizeof(struct iovec)); + memset(tvec, 0, sizeof(struct iovec)); #endif while (totalLength > 0) { tdc = afs_ObtainDCacheForWriting(avc, filePos, totalLength, treq, @@ -470,13 +474,9 @@ #elif defined(AFS_SUN5_ENV) AFS_GUNLOCK(); #ifdef AFS_SUN510_ENV - { - caller_context_t ct; - - VOP_RWLOCK(tfile->vnode, 1, &ct); - code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp, &ct); - VOP_RWUNLOCK(tfile->vnode, 1, &ct); - } + VOP_RWLOCK(tfile->vnode, 1, NULL); + code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp, NULL); + VOP_RWUNLOCK(tfile->vnode, 1, NULL); #else VOP_RWLOCK(tfile->vnode, 1); code = VOP_WRITE(tfile->vnode, &tuio, 0, afs_osi_credp); diff -Nru openafs-1.6.10/src/afsd/CellServDB openafs-1.6.11.1/src/afsd/CellServDB --- openafs-1.6.10/src/afsd/CellServDB 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/afsd/CellServDB 2015-04-13 08:00:35.000000000 +0000 @@ -1,6 +1,6 @@ ->grand.central.org #GCO Public CellServDB 28 Jan 2013 +>grand.central.org #GCO Public CellServDB 19 Jan 2015 18.9.48.14 #grand.mit.edu -128.2.203.61 #penn.central.org +128.2.13.219 #grand-old-opry.central.org >wu-wien.ac.at #University of Economics, Vienna, Austria 137.208.3.33 #goya.wu-wien.ac.at 137.208.7.57 #caravaggio.wu-wien.ac.at @@ -49,6 +49,8 @@ 66.93.118.125 #stormy 130.85.24.11 #weasel 130.85.24.13 #straykitten +>nilcons.com #nilcons.com +5.9.14.177 #files.nilcons.com >sodre.cx #Sodre.cx 128.8.140.165 #greed.sodre.cx >ruk.cuni.cz #Charles University Computer Centre, Prague, CR @@ -165,6 +167,10 @@ 134.95.19.10 #lyra.rrz.uni-koeln.de 134.95.67.97 #afs.thp.uni-koeln.de 134.95.112.8 #ladon.rrz.uni-koeln.de +>urz.uni-magdeburg.de #Otto-von-Guericke-Universitaet, Magdeburg +141.44.7.6 #lem.urz.uni-magdeburg.de +141.44.8.14 #bowles.urz.uni-magdeburg.de +141.44.13.5 #strugazki.urz.uni-magdeburg.de >physik.uni-mainz.de #institute of physics, university Mainz, Germany 134.93.130.93 #hardy.physik.uni-mainz.de >uni-mannheim.de #Uni Mannheim (Rechenzentrum) @@ -194,10 +200,6 @@ 131.215.176.65 #afs-c.ugcs.caltech.edu 131.215.176.67 #afs-a.ugcs.caltech.edu 131.215.176.68 #afs-b.ugcs.caltech.edu ->clarkson.edu #Clarkson University, Potsdam, New York USA -128.153.1.111 #arthur.clarkson.edu -128.153.9.111 #lancelot.clarkson.edu -128.153.17.111 #uther.clarkson.edu >andrew.cmu.edu #Carnegie Mellon University - Computing Services Cell 128.2.10.2 #afsdb-01.andrew.cmu.edu 128.2.10.7 #afsdb-02.andrew.cmu.edu @@ -294,9 +296,9 @@ 136.142.8.20 #afs10.srv.cis.pitt.edu 136.142.8.21 #afs11.srv.cis.pitt.edu >cs.pitt.edu #University of Pittsburgh - Computer Science -136.142.22.5 #new-ns1.cs.pitt.edu -136.142.22.6 #new-ns2.cs.pitt.edu -136.142.22.7 #new-ns3.cs.pitt.edu +136.142.22.5 #afs01.cs.pitt.edu +136.142.22.6 #afs02.cs.pitt.edu +136.142.22.7 #afs03.cs.pitt.edu >psc.edu #PSC (Pittsburgh Supercomputing Center) 128.182.59.182 #shaggy.psc.edu 128.182.66.184 #velma.psc.edu @@ -334,14 +336,10 @@ 134.79.18.27 #afsdb3.slac.stanford.edu >physics.ucsb.edu #UC Santa Barbara, Physics Dept 128.111.18.161 #ledzeppelin.physics.ucsb.edu ->cats.ucsc.edu #UC Santa Cruz, Comp and Tech Services, California U.S.A -128.114.123.14 #elan.ucsc.edu -128.114.123.15 #ichabod.ucsc.edu -128.114.123.18 #maneki.ucsc.edu ->acm.uiuc.edu #ACM at the University of Illinois -128.174.251.8 #alnitak.acm.uiuc.edu -128.174.251.9 #alnilam.acm.uiuc.edu -128.174.251.10 #mintaka.acm.uiuc.edu +>cats.ucsc.edu #University of California, Santa Cruz +128.114.123.8 #afs-prod-front-1.ucsc.edu +128.114.123.9 #afs-prod-front-2.ucsc.edu +128.114.123.10 #afs-prod-front-3.ucsc.edu >ncsa.uiuc.edu #National Center for Supercomputing Applications at Illinois 141.142.192.66 #nile-vm.ncsa.uiuc.edu 141.142.192.143 #congo-vm.ncsa.uiuc.edu @@ -372,10 +370,6 @@ 152.2.1.5 #db0.isis.unc.edu 152.2.1.6 #db1.isis.unc.edu 152.2.1.7 #db2.isis.unc.edu ->physics.unc.edu #Univ. of NC at Chapel Hill, Dept. of Physics -152.2.4.1 #who.physics.unc.edu -152.2.4.3 #what.physics.unc.edu -152.2.4.5 #when.physics.unc.edu >eng.utah.edu #University of Utah - Engineering 155.98.111.9 #lenny.eng.utah.edu 155.98.111.10 #carl.eng.utah.edu @@ -405,15 +399,12 @@ 193.144.209.20 #gridwall.ifca.unican.es >ific.uv.es #Instituto de Fisica Corpuscular, Valencia, Spain 147.156.163.11 #alpha.ific.uv.es ->dapnia.saclay.cea.fr #CEA DAPNIA -132.166.32.7 #dphrsg.saclay.cea.fr -132.166.32.12 #dphrsl.saclay.cea.fr ->in2p3.fr #IN2P3 production cell +>alteholz.eu #alteholz.eu +78.47.192.125 #krb1eu.afs.alteholz.net +>in2p3.fr #IN2P3 134.158.104.11 #ccafsdb01.in2p3.fr 134.158.104.12 #ccafsdb02.in2p3.fr -134.158.232.11 #ccafsdb1.in2p3.fr -134.158.232.12 #ccafsdb2.in2p3.fr -134.158.232.13 #ccafsdb3.in2p3.fr +134.158.104.13 #ccafsdb03.in2p3.fr >mcc.ac.gb #University of Manchester 130.88.203.41 #nevis.mc.man.ac.uk 130.88.203.144 #eryri.mc.man.ac.uk @@ -438,16 +429,16 @@ 137.78.160.21 #afsdb08.jpl.nasa.gov 137.78.160.22 #afsdb09.jpl.nasa.gov 137.78.160.23 #afsdb10.jpl.nasa.gov ->nersc.gov #National Energy Research Supercomputer Center -128.55.128.250 #mars.nersc.gov -128.55.128.252 #alfred.nersc.gov -128.55.128.254 #lurch.nersc.gov >doe.atomki.hu #Institute of Nuclear Research (MTA ATOMKI), Debrecen, Hungary 193.6.179.31 #afs.doe.atomki.hu >bme.hu #Budapest University of Technology and Economics 152.66.241.6 #afs.iit.bme.hu ->kfki.hu #Research Institute for Nuclear and Particle Physics - Budapest,H -148.6.8.14 #afs.kfki.hu +>kfki.hu #Wigner Research Centre for Physics - Budapest, Hungary +148.6.2.109 #afs0.kfki.hu +>rnd.ru.is #Reykjavik University Research and Development Network +130.208.242.66 #lithium.rnd.ru.is. +130.208.242.67 #beryllium.rnd.ru.is. +130.208.242.68 #boron.rnd.ru.is. >caspur.it #CASPUR Inter-University Computing Consortium, Rome 193.204.5.45 #pomodoro.caspur.it 193.204.5.46 #banana.caspur.it @@ -504,7 +495,6 @@ 193.204.161.79 #aux.dia.uniroma3.it 193.204.161.118 #afs.dia.uniroma3.it >vn.uniroma3.it #University Roma Tre, area Vasca Navale -193.204.161.136 #alfa.dia.uniroma3.it 193.205.219.59 #alfa2.dia.uniroma3.it 193.205.219.60 #beta2.dia.uniroma3.it 193.205.219.61 #gamma2.dia.uniroma3.it @@ -518,6 +508,8 @@ 132.250.114.2 #afs1.lcp.nrl.navy.mil 132.250.114.4 #afs2.lcp.nrl.navy.mil 132.250.114.6 #afs3.lcp.nrl.navy.mil +>nucleares.unam.mx #Instituto de Ciencias Nucleares, UNAM, Mexico +132.248.29.50 #nahualli.nucleares.unam.mx >crossproduct.net #crossproduct.net 207.114.88.173 #geodesic.crossproduct.net >epitech.net #EPITECH, France @@ -637,10 +629,12 @@ 130.237.162.230 #afsdb3.su.se >f9.ijs.si #F9, Jozef Stefan Institue 194.249.156.1 #brenta.ijs.si ->p-ng.si #Nova Gorica Polytechnic +>p-ng.si #University of Nova Gorica 193.2.120.2 #solkan.p-ng.si +193.2.120.9 #sabotin.p-ng.si >ihep.su #Institute for High-Energy Physics -194.190.165.195 #afssrv00.ihep.su +194.190.165.201 #fs0001.ihep.su +194.190.165.202 #fs0002.ihep.su >hep-ex.physics.metu.edu.tr #METU Department of Physics, Experimental HEP group, Ankara/Turke 144.122.31.131 #neutrino.physics.metu.edu.tr >phy.bris.ac.uk #Bristol University - physics @@ -649,8 +643,9 @@ 129.215.64.16 #afsdb0.inf.ed.ac.uk 129.215.64.17 #afsdb1.inf.ed.ac.uk 129.215.64.18 #afsdb2.inf.ed.ac.uk ->phas.gla.ac.uk #University of Glasgow Physics And Astronomy +>phas.gla.ac.uk #Univeristy of Glasgow Physics And Astronomy 194.36.1.19 #afsdb1.phas.gla.ac.uk +194.36.1.27 #afsdb3.phas.gla.ac.uk 194.36.1.33 #afsdb2.phas.gla.ac.uk >ic.ac.uk #Imperial College London 155.198.63.148 #icafs2.cc.ic.ac.uk @@ -659,7 +654,7 @@ 194.36.2.3 #afs1.hep.man.ac.uk 194.36.2.4 #afs2.hep.man.ac.uk 194.36.2.5 #afs3.hep.man.ac.uk ->rl.ac.uk #Rutherford Appleton Lab, England -130.246.183.203 #afs1.gridpp.rl.ac.uk -130.246.183.204 #afs2.gridpp.rl.ac.uk -130.246.183.205 #afs3.gridpp.rl.ac.uk +>tlabs.ac.za #iThemba LABS Cell +196.24.232.1 #afs01.tlabs.ac.za +196.24.232.2 #afs02.tlabs.ac.za +196.24.232.3 #afs03.tlabs.ac.za diff -Nru openafs-1.6.10/src/aklog/aklog.c openafs-1.6.11.1/src/aklog/aklog.c --- openafs-1.6.10/src/aklog/aklog.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/aklog/aklog.c 2015-04-13 08:00:35.000000000 +0000 @@ -624,7 +624,8 @@ * structure which should be freed by the caller. * @param[out[ userPtr * A string containing the principal of the user to whom the token was - * issued. This is a malloc'd block which should be freed by the caller. + * issued. This is a malloc'd block which should be freed by the caller, + * if set. * * @returns * 0 on success, an error value upon failure @@ -632,7 +633,7 @@ static int rxkad_build_native_token(krb5_context context, krb5_creds *v5cred, struct ktc_token **tokenPtr, char **userPtr) { - char username[BUFSIZ]; + char username[BUFSIZ]=""; struct ktc_token *token; #ifdef HAVE_NO_KRB5_524 char *p; @@ -657,14 +658,15 @@ (char *) &k4inst, (char *) &k4realm); if (status) { - afs_com_err(progname, status, "while converting principal " - "to Kerberos V4 format"); - return AKLOG_KERBEROS; - } - strcpy (username, k4name); - if (k4inst[0]) { - strcat (username, "."); - strcat (username, k4inst); + if (!noprdb) + afs_com_err(progname, status, + "while converting principal to Kerberos V4 format"); + } else { + strcpy (username, k4name); + if (k4inst[0]) { + strcat (username, "."); + strcat (username, k4inst); + } } #else len = min(get_princ_len(context, v5cred->client, 0), @@ -701,8 +703,8 @@ memcpy(token->ticket, v5cred->ticket.data, token->ticketLen); *tokenPtr = token; - *userPtr = strdup(username); - + if (username[0] != '\0') + *userPtr = strdup(username); return 0; } @@ -805,7 +807,8 @@ * be freed by the caller. * @parma[out] authuser * A string containing the principal of the user to whom the token was - * issued. This is a malloc'd block which should be freed by the caller. + * issued. This is a malloc'd block which should be freed by the caller, + * if set. * @param[out] foreign * Whether the user is considered as 'foreign' to the realm of the cell. * @@ -839,7 +842,7 @@ /* We now have the username, plus the realm name, so stitch them together * to give us the name that the ptserver will know the user by */ - if (realmUsed == NULL) { + if (realmUsed == NULL || username == NULL) { *authuser = username; username = NULL; *foreign = 0; @@ -893,7 +896,9 @@ { struct ktc_principal client, server; - strncpy(client.name, username, MAXKTCNAMELEN - 1); + strncpy(client.name, + username ? username : "", + MAXKTCNAMELEN - 1); strcpy(client.instance, ""); strncpy(client.cell, cell->name, MAXKTCREALMLEN - 1); @@ -1003,7 +1008,10 @@ noprdb = 1; #endif - if (noprdb) { + if (username == NULL) { + afs_dprintf("Not resolving name to id\n"); + } + else if (noprdb) { afs_dprintf("Not resolving name %s to id (-noprdb set)\n", username); } else { @@ -1082,9 +1090,14 @@ } } - afs_dprintf("Set username to %s\n", username); + if (username) { + afs_dprintf("Set username to %s\n", username); - afs_dprintf("Setting tokens. %s @ %s \n", username, cellconf.name); + afs_dprintf("Setting tokens. %s @ %s\n", + username, cellconf.name); + } else { + afs_dprintf("Setting tokens for cell %s\n", cellconf.name); + } #ifndef AFS_AIX51_ENV /* on AIX 4.1.4 with AFS 3.4a+ if a write is not done before diff -Nru openafs-1.6.10/src/cf/krb5.m4 openafs-1.6.11.1/src/cf/krb5.m4 --- openafs-1.6.10/src/cf/krb5.m4 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/cf/krb5.m4 2015-04-13 08:00:35.000000000 +0000 @@ -262,7 +262,8 @@ AS_IF([test x"$rra_use_kerberos" != xfalse], [AS_IF([test x"$rra_use_kerberos" = xtrue], [_RRA_LIB_KRB5_INTERNAL([true])], - [_RRA_LIB_KRB5_INTERNAL([false])])]) + [_RRA_LIB_KRB5_INTERNAL([false])])], + [AM_CONDITIONAL([KRB5_USES_COM_ERR], [false])]) AS_IF([test x"$KRB5_LIBS" != x], [AC_DEFINE([HAVE_KERBEROS], 1, [Define to enable Kerberos features.])])]) diff -Nru openafs-1.6.10/src/cf/linux-test4.m4 openafs-1.6.11.1/src/cf/linux-test4.m4 --- openafs-1.6.10/src/cf/linux-test4.m4 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/cf/linux-test4.m4 2015-04-13 08:00:35.000000000 +0000 @@ -278,9 +278,9 @@ #include ], [struct inode _inode; struct dentry _dentry; -struct nameidata _nameidata; +struct nameidata *_nameidata; void *cookie; -(void)_inode.i_op->put_link(&_dentry, &_nameidata, cookie);], +(void)_inode.i_op->put_link(&_dentry, _nameidata, cookie);], [IOP_PUT_LINK_TAKES_COOKIE], [define if your iops.put_link takes a cookie], []) @@ -395,7 +395,7 @@ AC_CHECK_LINUX_BUILD([whether register_sysctl_table has an insert_at_head argument], [ac_cv_linux_register_sysctl_table_noflag], [#include ], - [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], []) @@ -723,7 +723,11 @@ [#include ], [struct dentry *d = NULL; struct hlist_node *hn = NULL; - d->d_alias = *hn;], + #if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) + d->d_u.d_alias = *hn; + #else + d->d_alias = *hn; + #endif], [D_ALIAS_IS_HLIST], [define if dentry->d_alias is an hlist], []) @@ -737,6 +741,9 @@ #include ], [struct dentry *d = NULL, *cur; struct inode *ip; + #if defined(STRUCT_DENTRY_HAS_D_U_D_ALIAS) + # define d_alias d_u.d_alias + #endif hlist_for_each_entry(cur, &ip->i_dentry, d_alias) { } ], [HLIST_ITERATOR_NO_NODE], @@ -786,3 +793,16 @@ [define if your iops.lookup takes an unsigned int argument], [-Werror]) ]) + + +AC_DEFUN([LINUX_D_INVALIDATE_IS_VOID], [ + AC_CHECK_LINUX_BUILD([whether d_invalidate returns void], + [ac_cv_linux_func_d_invalidate_returns_void], + [#include ], + [ + void d_invalidate(struct dentry *); + ], + [D_INVALIDATE_IS_VOID], + [define if your d_invalidate returns void], + []) +]) diff -Nru openafs-1.6.10/src/cf/osconf.m4 openafs-1.6.11.1/src/cf/osconf.m4 --- openafs-1.6.10/src/cf/osconf.m4 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/cf/osconf.m4 2015-04-13 08:00:35.000000000 +0000 @@ -398,7 +398,7 @@ XLIBS="${LIB_AFSDB} ${XBSA_XLIBS} -framework CoreFoundation" ;; - *_darwin_100 | *_darwin_110 | *_darwin_120 | *_darwin_130 ) + *_darwin_100 | *_darwin_110 | *_darwin_120 | *_darwin_130 | *_darwin_140 ) AFSD_LDFLAGS="-F/System/Library/PrivateFrameworks -framework DiskArbitration -framework SystemConfiguration -framework IOKit -framework CoreFoundation" MT_CFLAGS='-DAFS_PTHREAD_ENV -D_REENTRANT ${XCFLAGS} ${ARCHFLAGS}' MT_LIBS="${LIB_AFSDB} -framework CoreFoundation" diff -Nru openafs-1.6.10/src/config/afs_sysnames.h openafs-1.6.11.1/src/config/afs_sysnames.h --- openafs-1.6.10/src/config/afs_sysnames.h 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/config/afs_sysnames.h 2015-04-13 08:00:35.000000000 +0000 @@ -76,6 +76,9 @@ #define SYS_NAME_ID_x86_darwin_130 523 #define SYS_NAME_ID_amd64_darwin_130 524 #define SYS_NAME_ID_arm_darwin_130 525 +#define SYS_NAME_ID_x86_darwin_140 526 +#define SYS_NAME_ID_amd64_darwin_140 527 +#define SYS_NAME_ID_arm_darwin_140 528 #define SYS_NAME_ID_next_mach20 601 #define SYS_NAME_ID_next_mach30 602 @@ -288,6 +291,7 @@ #define SYS_NAME_ID_i386_obsd51 2620 #define SYS_NAME_ID_i386_obsd52 2621 #define SYS_NAME_ID_i386_obsd53 2622 +#define SYS_NAME_ID_i386_obsd54 2623 #define SYS_NAME_ID_amd64_linux2 2700 #define SYS_NAME_ID_amd64_linux22 2701 @@ -357,6 +361,7 @@ #define SYS_NAME_ID_amd64_obsd51 4020 #define SYS_NAME_ID_amd64_obsd52 4021 #define SYS_NAME_ID_amd64_obsd53 4022 +#define SYS_NAME_ID_amd64_obsd54 4023 /* * Placeholder to keep system-wide standard flags since this file is included by all diff -Nru openafs-1.6.10/src/config/NTMakefile.amd64_w2k openafs-1.6.11.1/src/config/NTMakefile.amd64_w2k --- openafs-1.6.10/src/config/NTMakefile.amd64_w2k 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/config/NTMakefile.amd64_w2k 2015-04-13 08:00:35.000000000 +0000 @@ -90,7 +90,7 @@ AFSPRODUCT_VER_MINOR=6 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_PATCH) -AFSPRODUCT_VER_PATCH=1001 +AFSPRODUCT_VER_PATCH=1103 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_BUILD) AFSPRODUCT_VER_BUILD=0 diff -Nru openafs-1.6.10/src/config/NTMakefile.i386_nt40 openafs-1.6.11.1/src/config/NTMakefile.i386_nt40 --- openafs-1.6.10/src/config/NTMakefile.i386_nt40 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/config/NTMakefile.i386_nt40 2015-04-13 08:00:35.000000000 +0000 @@ -90,7 +90,7 @@ AFSPRODUCT_VER_MINOR=6 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_PATCH) -AFSPRODUCT_VER_PATCH=1001 +AFSPRODUCT_VER_PATCH=1103 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_BUILD) AFSPRODUCT_VER_BUILD=0 diff -Nru openafs-1.6.10/src/config/NTMakefile.i386_w2k openafs-1.6.11.1/src/config/NTMakefile.i386_w2k --- openafs-1.6.10/src/config/NTMakefile.i386_w2k 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/config/NTMakefile.i386_w2k 2015-04-13 08:00:35.000000000 +0000 @@ -94,7 +94,7 @@ AFSPRODUCT_VER_MINOR=6 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_PATCH) -AFSPRODUCT_VER_PATCH=1001 +AFSPRODUCT_VER_PATCH=1103 !ENDIF !IF !DEFINED(AFSPRODUCT_VER_BUILD) AFSPRODUCT_VER_BUILD=0 diff -Nru openafs-1.6.10/src/config/param.amd64_obsd54.h openafs-1.6.11.1/src/config/param.amd64_obsd54.h --- openafs-1.6.10/src/config/param.amd64_obsd54.h 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/config/param.amd64_obsd54.h 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,19 @@ +/* + * Thanks to Jim Rees and University of Michigan CITI, for the initial + * OpenBSD porting work. + */ + +#ifndef AFS_AMD64_PARAM_H +#define AFS_AMD64_PARAM_H + +#define SYS_NAME "amd64_obsd54" +#define SYS_NAME_ID SYS_NAME_ID_amd64_obsd54 + +#define AFS_XBSD_ENV 1 /* {Free,Open,Net}BSD */ +#define AFS_X86_XBSD_ENV 1 +#define AFS_X86_ENV 1 +#define AFS_64BITPOINTER_ENV 1 +#define AFS_64BITUSERPOINTER_ENV 1 +#define AFSLITTLE_ENDIAN 1 + +#endif /* AFS_AMD64_PARAM_H */ diff -Nru openafs-1.6.10/src/config/param.i386_obsd54.h openafs-1.6.11.1/src/config/param.i386_obsd54.h --- openafs-1.6.10/src/config/param.i386_obsd54.h 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/config/param.i386_obsd54.h 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,25 @@ +/* + * Thanks to Jim Rees and University of Michigan CITI, for the initial + * OpenBSD porting work. + */ + +#ifndef AFS_I386_PARAM_H +#define AFS_I386_PARAM_H + +#define SYS_NAME "i386_obsd54" +#define SYS_NAME_ID SYS_NAME_ID_i386_obsd54 + +#define AFS_X86_XBSD_ENV 1 +#define AFS_X86_ENV 1 +#define AFSLITTLE_ENDIAN 1 + +#ifdef _KERNEL +void bcopy(const void *, void *, size_t); + +static inline void *memmove(void *dst, const void *src, size_t len) { + bcopy(src, dst, len); + return(dst); +} +#endif + +#endif /* AFS_I386_PARAM_H */ diff -Nru openafs-1.6.10/src/config/param.obsd54.h openafs-1.6.11.1/src/config/param.obsd54.h --- openafs-1.6.10/src/config/param.obsd54.h 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/config/param.obsd54.h 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * Thanks to Jim Rees and University of Michigan CITI, for the initial + * OpenBSD porting work. + */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#ifndef IGNORE_STDS_H +#include +#endif + +#define AFS_XBSD_ENV 1 /* {Free,Open,Net}BSD */ + +#define AFS_NAMEI_ENV 1 /* User space interface to file system */ +#define AFS_64BIT_ENV 1 +#define AFS_64BIT_CLIENT 1 +#define AFS_64BIT_IOPS_ENV 1 /* Needed for NAMEI */ + +#define AFS_OBSD_ENV 1 +#define AFS_OBSD31_ENV 1 +#define AFS_OBSD32_ENV 1 +#define AFS_OBSD33_ENV 1 +#define AFS_OBSD34_ENV 1 +#define AFS_OBSD35_ENV 1 +#define AFS_OBSD36_ENV 1 +#define AFS_OBSD37_ENV 1 +#define AFS_OBSD38_ENV 1 +#define AFS_OBSD39_ENV 1 +#define AFS_OBSD40_ENV 1 +#define AFS_OBSD41_ENV 1 +#define AFS_OBSD42_ENV 1 +#define AFS_OBSD43_ENV 1 +#define AFS_OBSD44_ENV 1 +#define AFS_OBSD45_ENV 1 +#define AFS_OBSD46_ENV 1 +#define AFS_OBSD47_ENV 1 +#define AFS_OBSD48_ENV 1 +#define AFS_OBSD49_ENV 1 +#define AFS_OBSD50_ENV 1 +#define AFS_OBSD51_ENV 1 +#define AFS_OBSD52_ENV 1 +#define AFS_OBSD53_ENV 1 +#define AFS_OBSD54_ENV 1 +#undef AFS_NONFSTRANS +#define AFS_NONFSTRANS 1 +#define AFS_VM_RDWR_ENV 1 +#define AFS_VFS_ENV 1 +#define AFS_VFSINCL_ENV 1 + +#define FTRUNC O_TRUNC + +#define AFS_SYSCALL 208 +#define AFS_MOUNT_AFS "afs" + +#define RXK_LISTENER_ENV 1 +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ +#define AFS_USE_GETTIMEOFDAY 1 /* use gettimeofday to implement rx clock */ + +#ifndef IGNORE_STDS_H +#include +#endif + +#ifndef TAILQ_ENTRY +#include +#endif + +/* Extra kernel definitions (from kdefs file) */ +#ifdef _KERNEL +#ifdef MULTIPROCESSOR +#define AFS_GLOBAL_SUNLOCK 1 +#endif +#define AFS_SHORTGID 0 /* are group id's short? */ + +#if !defined(ASSEMBLER) && !defined(__LANGUAGE_ASSEMBLY__) +enum vcexcl { NONEXCL, EXCL }; + +#ifndef MIN +#define MIN(A,B) ((A) < (B) ? (A) : (B)) +#endif +#ifndef MAX +#define MAX(A,B) ((A) > (B) ? (A) : (B)) +#endif + +#endif /* ! ASSEMBLER & ! __LANGUAGE_ASSEMBLY__ */ +#endif /* _KERNEL */ + +#endif /* AFS_PARAM_H */ diff -Nru openafs-1.6.10/src/config/param.x86_darwin_140.h openafs-1.6.11.1/src/config/param.x86_darwin_140.h --- openafs-1.6.10/src/config/param.x86_darwin_140.h 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/config/param.x86_darwin_140.h 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,258 @@ +#ifndef UKERNEL +/* This section for kernel libafs compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_ENV 1 +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#define AFS_64BIT_CLIENT 1 +#define AFS_64BIT_IOPS_ENV 1 +#if defined(__ppc__) +#define AFS_PPC_ENV 1 +#elif defined(__i386__) || defined(__amd64__) +#define AFS_X86_ENV 1 +#else +#error Unsupported architecture +#endif +#ifdef __amd64__ +#define AFS_64BITUSERPOINTER_ENV 1 +#endif +#define AFS_64BIT_SIZEOF 1 /* seriously? */ +#include + +#define AFS_DARWIN_ENV +#define AFS_DARWIN70_ENV +#define AFS_DARWIN80_ENV +#define AFS_DARWIN90_ENV +#define AFS_DARWIN100_ENV +#define AFS_DARWIN110_ENV +#define AFS_DARWIN120_ENV +#define AFS_DARWIN130_ENV +#define AFS_DARWIN140_ENV +#undef AFS_NONFSTRANS +#define AFS_NONFSTRANS +#define AFS_SYSCALL 230 +#define AFS_NAMEI_ENV 1 +#define DARWIN_REFBASE 3 +#define AFS_WARNUSER_MARINER_ENV 1 +#define AFS_CACHE_VNODE_PATH +#define AFS_NEW_BKG 1 +#define NEED_IOCTL32 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#if defined(__ppc__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define SYS_NAME "ppc_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__ppc64__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define sys_ppc64_darwin_100 1 +#define SYS_NAME "ppc64_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc64_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__i386__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_90 1 +#define sys_x86_darwin_100 1 +#define sys_x86_darwin_110 1 +#define sys_x86_darwin_120 1 +#define sys_x86_darwin_130 1 +#define sys_x86_darwin_140 1 +#define SYS_NAME "x86_darwin_140" +#define SYS_NAME_ID SYS_NAME_ID_x86_darwin_140 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__amd64__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_90 1 +#define sys_x86_darwin_100 1 +#define sys_amd64_darwin_100 1 +#define sys_amd64_darwin_110 1 +#define sys_amd64_darwin_120 1 +#define sys_amd64_darwin_130 1 +#define sys_amd64_darwin_140 1 +#define SYS_NAME "amd64_darwin_140" +#define SYS_NAME_ID SYS_NAME_ID_amd64_darwin_140 +#define AFSLITTLE_ENDIAN 1 +#else +#error Unsupported architecture +#endif +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ + +#define AFS_GCPAGS 0 +#define RXK_UPCALL_ENV 1 +#define RXK_TIMEDSLEEP_ENV 1 + +#ifdef KERNEL +#undef MACRO_BEGIN +#undef MACRO_END +#include +#define AFS_GLOBAL_SUNLOCK 1 +#define AFS_VFS34 1 /* What is VFS34??? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define AFS_CLBYTES CLBYTES +#define osi_GetTime(x) microtime(x) +#define AFS_KALLOC(x) _MALLOC(x, M_TEMP, M_WAITOK) +#define AFS_KFREE(x,y) _FREE(x,M_TEMP) +#define v_count v_usecount +#define v_vfsp v_mount +#define vfs_bsize mnt_stat.f_bsize +#define vfs_fsid mnt_stat.f_fsid +#define va_nodeid va_fileid +#define vfs_vnodecovered mnt_vnodecovered +#define direct dirent + +#define BIND_8_COMPAT + +#endif +#endif /* AFS_PARAM_H */ + +#else /* !defined(UKERNEL) */ + +/* This section for user space compiles only */ + +#ifndef AFS_PARAM_H +#define AFS_PARAM_H + +#define AFS_ENV 1 +#define AFS_64BIT_ENV 1 /* Defines afs_int32 as int, not long. */ +#define AFS_64BIT_CLIENT 1 +#if defined(__ppc__) +#define AFS_PPC_ENV 1 +#elif defined(__i386__) || defined(__amd64__) +#define AFS_X86_ENV 1 +#else +#error Unsupported architecture +#endif +#ifdef __amd64__ +#define AFS_64BITUSERPOINTER_ENV 1 +#endif + +#include +#define AFS_USERSPACE_ENV +#define AFS_USR_DARWIN_ENV +#define AFS_USR_DARWIN70_ENV +#define AFS_USR_DARWIN80_ENV +#define AFS_USR_DARWIN90_ENV +#define AFS_USR_DARWIN100_ENV +#define AFS_USR_DARWIN110_ENV +#define AFS_USR_DARWIN120_ENV +#define AFS_USR_DARWIN130_ENV +#define AFS_USR_DARWIN140_ENV +#undef AFS_NONFSTRANS +#define AFS_NONFSTRANS +#define AFS_SYSCALL 230 +#define DARWIN_REFBASE 0 +#define AFS_WARNUSER_MARINER_ENV 1 + +/* File system entry (used if mount.h doesn't define MOUNT_AFS */ +#define AFS_MOUNT_AFS "afs" + +/* Machine / Operating system information */ +#if defined(__ppc__) +#define sys_ppc_darwin_12 1 +#define sys_ppc_darwin_13 1 +#define sys_ppc_darwin_14 1 +#define sys_ppc_darwin_60 1 +#define sys_ppc_darwin_70 1 +#define sys_ppc_darwin_80 1 +#define sys_ppc_darwin_90 1 +#define sys_ppc_darwin_100 1 +#define SYS_NAME "ppc_darwin_100" +#define SYS_NAME_ID SYS_NAME_ID_ppc_darwin_100 +#define AFSBIG_ENDIAN 1 +#elif defined(__i386__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_100 1 +#define sys_x86_darwin_110 1 +#define sys_x86_darwin_120 1 +#define sys_x86_darwin_130 1 +#define sys_x64_darwin_140 1 +#define SYS_NAME "x86_darwin_140" +#define SYS_NAME_ID SYS_NAME_ID_x86_darwin_140 +#define AFSLITTLE_ENDIAN 1 +#elif defined(__amd64__) +#define sys_x86_darwin_12 1 +#define sys_x86_darwin_13 1 +#define sys_x86_darwin_14 1 +#define sys_x86_darwin_60 1 +#define sys_x86_darwin_70 1 +#define sys_x86_darwin_80 1 +#define sys_x86_darwin_100 1 +#define sys_amd64_darwin_100 1 +#define sys_amd64_darwin_110 1 +#define sys_amd64_darwin_120 1 +#define sys_amd64_darwin_130 1 +#define sys_amd64_darwin_140 1 +#define SYS_NAME "amd64_darwin_140" +#define SYS_NAME_ID SYS_NAME_ID_amd64_darwin_140 +#define AFSLITTLE_ENDIAN 1 +#else +#error Unsupported architecture +#endif +#define AFS_HAVE_FFS 1 /* Use system's ffs. */ + +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE + +#define AFS_GCPAGS 0 /* if nonzero, garbage collect PAGs */ +#define RXK_LISTENER_ENV 1 + +#define AFS_VFS34 1 /* What is VFS34??? */ +#define afsio_iov uio_iov +#define afsio_iovcnt uio_iovcnt +#define afsio_offset uio_offset +#define afsio_seg uio_segflg +#define afsio_resid uio_resid +#define AFS_UIOSYS UIO_SYSSPACE +#define AFS_UIOUSER UIO_USERSPACE +#define VATTR_NULL usr_vattr_null + +#define AFS_DIRENT +#ifndef CMSERVERPREF +#define CMSERVERPREF +#endif + +#define BIND_8_COMPAT +#endif /* AFS_PARAM_H */ + +#endif /* !defined(UKERNEL) */ diff -Nru openafs-1.6.10/src/libafs/afs.x86_darwin_140.plist.in openafs-1.6.11.1/src/libafs/afs.x86_darwin_140.plist.in --- openafs-1.6.10/src/libafs/afs.x86_darwin_140.plist.in 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/libafs/afs.x86_darwin_140.plist.in 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,33 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + afs + CFBundleIdentifier + org.openafs.filesystems.afs + CFBundleInfoDictionaryVersion + 8.0 + CFBundleName + afs + CFBundlePackageType + KEXT + CFBundleShortVersionString + @MACOS_VERSION@ + CFBundleSignature + ???? + CFBundleVersion + @MACOS_VERSION@ + OSBundleLibraries + + com.apple.kpi.bsd + 8.0.0 + com.apple.kpi.mach + 8.0.0 + com.apple.kpi.libkern + 8.0 + + + diff -Nru openafs-1.6.10/src/libafs/MakefileProto.FBSD.in openafs-1.6.11.1/src/libafs/MakefileProto.FBSD.in --- openafs-1.6.10/src/libafs/MakefileProto.FBSD.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/libafs/MakefileProto.FBSD.in 2015-04-13 08:00:35.000000000 +0000 @@ -43,7 +43,7 @@ KDEFS=-Wall -nostdinc -I/usr/include -D_KERNEL -DKLD_MODULE \ -elf \ -mno-mmx -mno-3dnow -mno-sse -mno-sse2 \ - -mno-align-long-strings -fno-common -ffreestanding \ + -fno-common -ffreestanding \ -I${KBLD} -include opt_global.h -fno-strict-aliasing DBUG = -O2 diff -Nru openafs-1.6.10/src/packaging/Debian/CellServDB openafs-1.6.11.1/src/packaging/Debian/CellServDB --- openafs-1.6.10/src/packaging/Debian/CellServDB 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/Debian/CellServDB 2015-04-13 08:00:35.000000000 +0000 @@ -1,6 +1,6 @@ ->grand.central.org #GCO Public CellServDB 28 Jan 2013 +>grand.central.org #GCO Public CellServDB 19 Jan 2015 18.9.48.14 #grand.mit.edu -128.2.203.61 #penn.central.org +128.2.13.219 #grand-old-opry.central.org >wu-wien.ac.at #University of Economics, Vienna, Austria 137.208.3.33 #goya.wu-wien.ac.at 137.208.7.57 #caravaggio.wu-wien.ac.at @@ -49,6 +49,8 @@ 66.93.118.125 #stormy 130.85.24.11 #weasel 130.85.24.13 #straykitten +>nilcons.com #nilcons.com +5.9.14.177 #files.nilcons.com >sodre.cx #Sodre.cx 128.8.140.165 #greed.sodre.cx >ruk.cuni.cz #Charles University Computer Centre, Prague, CR @@ -165,6 +167,10 @@ 134.95.19.10 #lyra.rrz.uni-koeln.de 134.95.67.97 #afs.thp.uni-koeln.de 134.95.112.8 #ladon.rrz.uni-koeln.de +>urz.uni-magdeburg.de #Otto-von-Guericke-Universitaet, Magdeburg +141.44.7.6 #lem.urz.uni-magdeburg.de +141.44.8.14 #bowles.urz.uni-magdeburg.de +141.44.13.5 #strugazki.urz.uni-magdeburg.de >physik.uni-mainz.de #institute of physics, university Mainz, Germany 134.93.130.93 #hardy.physik.uni-mainz.de >uni-mannheim.de #Uni Mannheim (Rechenzentrum) @@ -194,10 +200,6 @@ 131.215.176.65 #afs-c.ugcs.caltech.edu 131.215.176.67 #afs-a.ugcs.caltech.edu 131.215.176.68 #afs-b.ugcs.caltech.edu ->clarkson.edu #Clarkson University, Potsdam, New York USA -128.153.1.111 #arthur.clarkson.edu -128.153.9.111 #lancelot.clarkson.edu -128.153.17.111 #uther.clarkson.edu >andrew.cmu.edu #Carnegie Mellon University - Computing Services Cell 128.2.10.2 #afsdb-01.andrew.cmu.edu 128.2.10.7 #afsdb-02.andrew.cmu.edu @@ -294,9 +296,9 @@ 136.142.8.20 #afs10.srv.cis.pitt.edu 136.142.8.21 #afs11.srv.cis.pitt.edu >cs.pitt.edu #University of Pittsburgh - Computer Science -136.142.22.5 #new-ns1.cs.pitt.edu -136.142.22.6 #new-ns2.cs.pitt.edu -136.142.22.7 #new-ns3.cs.pitt.edu +136.142.22.5 #afs01.cs.pitt.edu +136.142.22.6 #afs02.cs.pitt.edu +136.142.22.7 #afs03.cs.pitt.edu >psc.edu #PSC (Pittsburgh Supercomputing Center) 128.182.59.182 #shaggy.psc.edu 128.182.66.184 #velma.psc.edu @@ -334,14 +336,10 @@ 134.79.18.27 #afsdb3.slac.stanford.edu >physics.ucsb.edu #UC Santa Barbara, Physics Dept 128.111.18.161 #ledzeppelin.physics.ucsb.edu ->cats.ucsc.edu #UC Santa Cruz, Comp and Tech Services, California U.S.A -128.114.123.14 #elan.ucsc.edu -128.114.123.15 #ichabod.ucsc.edu -128.114.123.18 #maneki.ucsc.edu ->acm.uiuc.edu #ACM at the University of Illinois -128.174.251.8 #alnitak.acm.uiuc.edu -128.174.251.9 #alnilam.acm.uiuc.edu -128.174.251.10 #mintaka.acm.uiuc.edu +>cats.ucsc.edu #University of California, Santa Cruz +128.114.123.8 #afs-prod-front-1.ucsc.edu +128.114.123.9 #afs-prod-front-2.ucsc.edu +128.114.123.10 #afs-prod-front-3.ucsc.edu >ncsa.uiuc.edu #National Center for Supercomputing Applications at Illinois 141.142.192.66 #nile-vm.ncsa.uiuc.edu 141.142.192.143 #congo-vm.ncsa.uiuc.edu @@ -372,10 +370,6 @@ 152.2.1.5 #db0.isis.unc.edu 152.2.1.6 #db1.isis.unc.edu 152.2.1.7 #db2.isis.unc.edu ->physics.unc.edu #Univ. of NC at Chapel Hill, Dept. of Physics -152.2.4.1 #who.physics.unc.edu -152.2.4.3 #what.physics.unc.edu -152.2.4.5 #when.physics.unc.edu >eng.utah.edu #University of Utah - Engineering 155.98.111.9 #lenny.eng.utah.edu 155.98.111.10 #carl.eng.utah.edu @@ -405,15 +399,12 @@ 193.144.209.20 #gridwall.ifca.unican.es >ific.uv.es #Instituto de Fisica Corpuscular, Valencia, Spain 147.156.163.11 #alpha.ific.uv.es ->dapnia.saclay.cea.fr #CEA DAPNIA -132.166.32.7 #dphrsg.saclay.cea.fr -132.166.32.12 #dphrsl.saclay.cea.fr ->in2p3.fr #IN2P3 production cell +>alteholz.eu #alteholz.eu +78.47.192.125 #krb1eu.afs.alteholz.net +>in2p3.fr #IN2P3 134.158.104.11 #ccafsdb01.in2p3.fr 134.158.104.12 #ccafsdb02.in2p3.fr -134.158.232.11 #ccafsdb1.in2p3.fr -134.158.232.12 #ccafsdb2.in2p3.fr -134.158.232.13 #ccafsdb3.in2p3.fr +134.158.104.13 #ccafsdb03.in2p3.fr >mcc.ac.gb #University of Manchester 130.88.203.41 #nevis.mc.man.ac.uk 130.88.203.144 #eryri.mc.man.ac.uk @@ -438,16 +429,16 @@ 137.78.160.21 #afsdb08.jpl.nasa.gov 137.78.160.22 #afsdb09.jpl.nasa.gov 137.78.160.23 #afsdb10.jpl.nasa.gov ->nersc.gov #National Energy Research Supercomputer Center -128.55.128.250 #mars.nersc.gov -128.55.128.252 #alfred.nersc.gov -128.55.128.254 #lurch.nersc.gov >doe.atomki.hu #Institute of Nuclear Research (MTA ATOMKI), Debrecen, Hungary 193.6.179.31 #afs.doe.atomki.hu >bme.hu #Budapest University of Technology and Economics 152.66.241.6 #afs.iit.bme.hu ->kfki.hu #Research Institute for Nuclear and Particle Physics - Budapest,H -148.6.8.14 #afs.kfki.hu +>kfki.hu #Wigner Research Centre for Physics - Budapest, Hungary +148.6.2.109 #afs0.kfki.hu +>rnd.ru.is #Reykjavik University Research and Development Network +130.208.242.66 #lithium.rnd.ru.is. +130.208.242.67 #beryllium.rnd.ru.is. +130.208.242.68 #boron.rnd.ru.is. >caspur.it #CASPUR Inter-University Computing Consortium, Rome 193.204.5.45 #pomodoro.caspur.it 193.204.5.46 #banana.caspur.it @@ -504,7 +495,6 @@ 193.204.161.79 #aux.dia.uniroma3.it 193.204.161.118 #afs.dia.uniroma3.it >vn.uniroma3.it #University Roma Tre, area Vasca Navale -193.204.161.136 #alfa.dia.uniroma3.it 193.205.219.59 #alfa2.dia.uniroma3.it 193.205.219.60 #beta2.dia.uniroma3.it 193.205.219.61 #gamma2.dia.uniroma3.it @@ -518,6 +508,8 @@ 132.250.114.2 #afs1.lcp.nrl.navy.mil 132.250.114.4 #afs2.lcp.nrl.navy.mil 132.250.114.6 #afs3.lcp.nrl.navy.mil +>nucleares.unam.mx #Instituto de Ciencias Nucleares, UNAM, Mexico +132.248.29.50 #nahualli.nucleares.unam.mx >crossproduct.net #crossproduct.net 207.114.88.173 #geodesic.crossproduct.net >epitech.net #EPITECH, France @@ -637,10 +629,12 @@ 130.237.162.230 #afsdb3.su.se >f9.ijs.si #F9, Jozef Stefan Institue 194.249.156.1 #brenta.ijs.si ->p-ng.si #Nova Gorica Polytechnic +>p-ng.si #University of Nova Gorica 193.2.120.2 #solkan.p-ng.si +193.2.120.9 #sabotin.p-ng.si >ihep.su #Institute for High-Energy Physics -194.190.165.195 #afssrv00.ihep.su +194.190.165.201 #fs0001.ihep.su +194.190.165.202 #fs0002.ihep.su >hep-ex.physics.metu.edu.tr #METU Department of Physics, Experimental HEP group, Ankara/Turke 144.122.31.131 #neutrino.physics.metu.edu.tr >phy.bris.ac.uk #Bristol University - physics @@ -649,8 +643,9 @@ 129.215.64.16 #afsdb0.inf.ed.ac.uk 129.215.64.17 #afsdb1.inf.ed.ac.uk 129.215.64.18 #afsdb2.inf.ed.ac.uk ->phas.gla.ac.uk #University of Glasgow Physics And Astronomy +>phas.gla.ac.uk #Univeristy of Glasgow Physics And Astronomy 194.36.1.19 #afsdb1.phas.gla.ac.uk +194.36.1.27 #afsdb3.phas.gla.ac.uk 194.36.1.33 #afsdb2.phas.gla.ac.uk >ic.ac.uk #Imperial College London 155.198.63.148 #icafs2.cc.ic.ac.uk @@ -659,7 +654,7 @@ 194.36.2.3 #afs1.hep.man.ac.uk 194.36.2.4 #afs2.hep.man.ac.uk 194.36.2.5 #afs3.hep.man.ac.uk ->rl.ac.uk #Rutherford Appleton Lab, England -130.246.183.203 #afs1.gridpp.rl.ac.uk -130.246.183.204 #afs2.gridpp.rl.ac.uk -130.246.183.205 #afs3.gridpp.rl.ac.uk +>tlabs.ac.za #iThemba LABS Cell +196.24.232.1 #afs01.tlabs.ac.za +196.24.232.2 #afs02.tlabs.ac.za +196.24.232.3 #afs03.tlabs.ac.za diff -Nru openafs-1.6.10/src/packaging/MacOS/buildpkg.sh.in openafs-1.6.11.1/src/packaging/MacOS/buildpkg.sh.in --- openafs-1.6.10/src/packaging/MacOS/buildpkg.sh.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/MacOS/buildpkg.sh.in 2015-04-13 08:00:35.000000000 +0000 @@ -46,6 +46,10 @@ if [ $majorvers -eq 13 ]; then RELNAME="Mavericks" fi +if [ $majorvers -eq 14 ]; then + RELNAME="Yosemite" +fi + PKGROOT=$CURDIR/pkgroot PKGRES=$CURDIR/pkgres diff -Nru openafs-1.6.10/src/packaging/MacOS/InstallationCheck.14 openafs-1.6.11.1/src/packaging/MacOS/InstallationCheck.14 --- openafs-1.6.10/src/packaging/MacOS/InstallationCheck.14 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/MacOS/InstallationCheck.14 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,19 @@ +#!/bin/sh +majorvers=`uname -r | sed 's/\..*//'` +if [ $majorvers -ne 14 ]; then + exit 112 +fi + +# check for temporary versions of ThisCell and CellAlias +# and move them aside +tmpthiscell=/private/tmp/org.OpenAFS.Install.ThisCell.$USER +tmpcellalias=/private/tmp/org.OpenAFS.Install.CellAlias.$USER +date=`date +%Y%m%d%H%M` +if [ -e $tmpthiscell ]; then + mv -f $tmpthiscell $tmpthiscell.$date +fi +if [ -e $tmpcellalias ]; then + mv -f $tmpcellalias $tmpcellalias.$date +fi + +exit 0 diff -Nru openafs-1.6.10/src/packaging/MacOS/InstallationCheck.strings.14 openafs-1.6.11.1/src/packaging/MacOS/InstallationCheck.strings.14 --- openafs-1.6.10/src/packaging/MacOS/InstallationCheck.strings.14 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/MacOS/InstallationCheck.strings.14 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1 @@ +"16" = "This OpenAFS release requires Yosemite (10.10)"; diff -Nru openafs-1.6.10/src/packaging/MacOS/ReadMe.rtf.14 openafs-1.6.11.1/src/packaging/MacOS/ReadMe.rtf.14 --- openafs-1.6.10/src/packaging/MacOS/ReadMe.rtf.14 1970-01-01 00:00:00.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/MacOS/ReadMe.rtf.14 2015-04-13 08:00:35.000000000 +0000 @@ -0,0 +1,7 @@ +{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf320 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\margl1440\margr1440\vieww9000\viewh9000\viewkind0 +\pard\tx1440\tx2880\tx4320\tx5760\tx7200\ql\qnatural + +\f0\fs24 \cf0 This release of OpenAFS is targeted at MacOS 10.10 (Yosemite) and is not recommended for use with any other version.} diff -Nru openafs-1.6.10/src/packaging/RedHat/openafs-client.service openafs-1.6.11.1/src/packaging/RedHat/openafs-client.service --- openafs-1.6.10/src/packaging/RedHat/openafs-client.service 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/RedHat/openafs-client.service 2015-04-13 08:00:35.000000000 +0000 @@ -1,6 +1,8 @@ [Unit] Description=OpenAFS Client Service -After=syslog.target network.target +Wants=network-online.target +After=syslog.target network-online.target +Before=remote-fs.target [Service] Type=forking diff -Nru openafs-1.6.10/src/packaging/RedHat/openafs.spec.in openafs-1.6.11.1/src/packaging/RedHat/openafs.spec.in --- openafs-1.6.10/src/packaging/RedHat/openafs.spec.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/packaging/RedHat/openafs.spec.in 2015-04-13 08:00:35.000000000 +0000 @@ -266,7 +266,7 @@ Source10: http://www.openafs.org/dl/openafs/%{afsvers}/RELNOTES-%{afsvers} Source11: http://www.openafs.org/dl/openafs/%{afsvers}/ChangeLog -Source20: http://dl.central.org/dl/cellservdb/CellServDB.2013-01-28 +Source20: http://dl.central.org/dl/cellservdb/CellServDB.2015-01-19 Source30: openafs-kernel-version.sh Source996: openafs-kvers-is.sh diff -Nru openafs-1.6.10/src/rx/DARWIN/rx_knet.c openafs-1.6.11.1/src/rx/DARWIN/rx_knet.c --- openafs-1.6.10/src/rx/DARWIN/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/DARWIN/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -165,6 +165,14 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, int nvecs, int *alength) { + int i; + struct iovec iov[RX_MAXIOVECS]; + struct sockaddr *sa = NULL; + int code; + size_t resid; + + int haveGlock = ISAFS_GLOCK(); + #ifdef AFS_DARWIN80_ENV socket_t asocket = (socket_t)so; struct msghdr msg; @@ -174,14 +182,9 @@ #else struct socket *asocket = (struct socket *)so; struct uio u; + memset(&u, 0, sizeof(u)); #endif - int i; - struct iovec iov[RX_MAXIOVECS]; - struct sockaddr *sa = NULL; - int code; - size_t resid; - - int haveGlock = ISAFS_GLOCK(); + memset(&iov, 0, sizeof(iov)); /*AFS_STATCNT(osi_NetReceive); */ if (nvecs > RX_MAXIOVECS) @@ -281,6 +284,10 @@ osi_NetSend(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec, int nvecs, afs_int32 alength, int istack) { + afs_int32 code; + int i; + struct iovec iov[RX_MAXIOVECS]; + int haveGlock = ISAFS_GLOCK(); #ifdef AFS_DARWIN80_ENV socket_t asocket = (socket_t)so; struct msghdr msg; @@ -288,11 +295,9 @@ #else struct socket *asocket = (struct socket *)so; struct uio u; + memset(&u, 0, sizeof(u)); #endif - afs_int32 code; - int i; - struct iovec iov[RX_MAXIOVECS]; - int haveGlock = ISAFS_GLOCK(); + memset(&iov, 0, sizeof(iov)); AFS_STATCNT(osi_NetSend); if (nvecs > RX_MAXIOVECS) diff -Nru openafs-1.6.10/src/rx/FBSD/rx_knet.c openafs-1.6.11.1/src/rx/FBSD/rx_knet.c --- openafs-1.6.10/src/rx/FBSD/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/FBSD/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -26,6 +26,10 @@ int code; int haveGlock = ISAFS_GLOCK(); + + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + /*AFS_STATCNT(osi_NetReceive); */ if (nvecs > RX_MAXIOVECS) @@ -137,6 +141,9 @@ struct uio u; int haveGlock = ISAFS_GLOCK(); + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_NetSend); if (nvecs > RX_MAXIOVECS) osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); diff -Nru openafs-1.6.10/src/rx/HPUX/rx_knet.c openafs-1.6.11.1/src/rx/HPUX/rx_knet.c --- openafs-1.6.10/src/rx/HPUX/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/HPUX/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -225,6 +225,9 @@ int code; int size = sizeof(struct sockaddr_in); + memset(&uio, 0, sizeof(uio)); + memset(&temp, 0, sizeof(temp)); + /* Guess based on rxk_NewSocket */ bp = allocb((size + SO_MSGOFFSET + 1), BPRI_MED); if (!bp) @@ -258,6 +261,9 @@ int flags = 0; MBLKP bp, sp; + memset(&tuio, 0, sizeof(tuio)); + memset(&tmpvec, 0, sizeof(tempvec)); + if (nvecs > RX_MAXWVECS + 2) { osi_Panic("Too many (%d) iovecs passed to osi_NetReceive\n", nvecs); } diff -Nru openafs-1.6.10/src/rx/IRIX/rx_knet.c openafs-1.6.11.1/src/rx/IRIX/rx_knet.c --- openafs-1.6.10/src/rx/IRIX/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/IRIX/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -57,6 +57,9 @@ BHV_PDATA(&bhv) = (void *)so; #endif + memset(&tuio, 0, sizeof(tuio)); + memset(&tmpvec, 0, sizeof(tmpvec)); + tuio.uio_iov = tmpvec; tuio.uio_iovcnt = nvecs; tuio.uio_offset = 0; @@ -429,6 +432,9 @@ int i; bhv_desc_t bhv; + memset(&tuio, 0, sizeof(tuio)); + memset(&tvecs, 0, sizeof(tvecs)); + if (nvec > RX_MAXWVECS + 1) { osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvec); } diff -Nru openafs-1.6.10/src/rx/LINUX/rx_knet.c openafs-1.6.11.1/src/rx/LINUX/rx_knet.c --- openafs-1.6.10/src/rx/LINUX/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/LINUX/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -229,8 +229,13 @@ #endif memcpy(tmpvec, iov, iovcnt * sizeof(struct iovec)); msg.msg_name = from; +#if defined(STRUCT_MSGHDR_HAS_MSG_ITER) + msg.msg_iter.iov = tmpvec; + msg.msg_iter.nr_segs = iovcnt; +#else msg.msg_iov = tmpvec; msg.msg_iovlen = iovcnt; +#endif msg.msg_control = NULL; msg.msg_controllen = 0; msg.msg_flags = 0; diff -Nru openafs-1.6.10/src/rx/NBSD/rx_knet.c openafs-1.6.11.1/src/rx/NBSD/rx_knet.c --- openafs-1.6.10/src/rx/NBSD/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/NBSD/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -24,6 +24,9 @@ int glocked = ISAFS_GLOCK(); + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + if (nvecs > RX_MAXIOVECS) osi_Panic("osi_NetReceive: %d: too many iovecs\n", nvecs); @@ -89,6 +92,9 @@ struct mbuf *nam; int glocked = ISAFS_GLOCK(); + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_NetSend); if (nvecs > RX_MAXIOVECS) osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); diff -Nru openafs-1.6.10/src/rx/OBSD/rx_knet.c openafs-1.6.11.1/src/rx/OBSD/rx_knet.c --- openafs-1.6.10/src/rx/OBSD/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/OBSD/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -24,6 +24,9 @@ int haveGlock = ISAFS_GLOCK(); + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + if (nvecs > RX_MAXIOVECS) osi_Panic("osi_NetReceive: %d: too many iovecs\n", nvecs); @@ -92,6 +95,9 @@ struct mbuf *nam; int haveGlock = ISAFS_GLOCK(); + memset(&u, 0, sizeof(u)); + memset(&iov, 0, sizeof(iov)); + AFS_STATCNT(osi_NetSend); if (nvecs > RX_MAXIOVECS) osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); diff -Nru openafs-1.6.10/src/rx/SOLARIS/rx_knet.c openafs-1.6.11.1/src/rx/SOLARIS/rx_knet.c --- openafs-1.6.10/src/rx/SOLARIS/rx_knet.c 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/rx/SOLARIS/rx_knet.c 2015-04-13 08:00:35.000000000 +0000 @@ -491,6 +491,9 @@ int error; int i; + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + if (nvecs > RX_MAXIOVECS) { osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); } @@ -531,6 +534,9 @@ int error; int i; + memset(&uio, 0, sizeof(uio)); + memset(&iov, 0, sizeof(iov)); + if (nvecs > RX_MAXIOVECS) { osi_Panic("osi_NetSend: %d: Too many iovecs.\n", nvecs); } diff -Nru openafs-1.6.10/src/shlibafsrpc/libafsrpc.map openafs-1.6.11.1/src/shlibafsrpc/libafsrpc.map --- openafs-1.6.10/src/shlibafsrpc/libafsrpc.map 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/shlibafsrpc/libafsrpc.map 2015-04-13 08:00:35.000000000 +0000 @@ -148,7 +148,6 @@ afs_xdr_short; afs_xdr_string; afs_xdr_vector; - afs_xdr_pointer; rx_InterruptCall; rx_SetBusyChannelError; rx_KeepAliveOn; diff -Nru openafs-1.6.10/src/tbudb/Makefile.in openafs-1.6.11.1/src/tbudb/Makefile.in --- openafs-1.6.10/src/tbudb/Makefile.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/tbudb/Makefile.in 2015-04-13 08:00:35.000000000 +0000 @@ -18,7 +18,7 @@ RX=../rx UTIL=../util -BUDB=../budb +BUDB=${srcdir}/../budb RXOBJS= rx_pthread.o rxkad_errs.o @@ -166,16 +166,16 @@ ${CC} ${LDFLAGS} -o budb_server $(SERVER_OBJS) ${LIBS} ${MT_LIBS} ${XLIBS} ${KRB5_LIBS} budb.cs.c: ${BUDB}/budb.rg - ${RXGEN} -u -C -o $@ ${srcdir}/${BUDB}/budb.rg + ${RXGEN} -u -C -o $@ ${BUDB}/budb.rg budb.ss.c: ${BUDB}/budb.rg - ${RXGEN} -S -o $@ ${srcdir}/${BUDB}/budb.rg + ${RXGEN} -S -o $@ ${BUDB}/budb.rg budb.xdr.c: ${BUDB}/budb.rg - ${RXGEN} -c -o $@ ${srcdir}/${BUDB}/budb.rg + ${RXGEN} -c -o $@ ${BUDB}/budb.rg budb.h: ${BUDB}/budb.rg - ${RXGEN} -u -h -o $@ ${srcdir}/${BUDB}/budb.rg + ${RXGEN} -u -h -o $@ ${BUDB}/budb.rg budb.cs.c: budb.h budb.xdr.c: budb.h diff -Nru openafs-1.6.10/src/tptserver/Makefile.in openafs-1.6.11.1/src/tptserver/Makefile.in --- openafs-1.6.10/src/tptserver/Makefile.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/tptserver/Makefile.in 2015-04-13 08:00:35.000000000 +0000 @@ -175,10 +175,10 @@ ${CCRULE} ${srcdir}/${PTSERVER}/ptuser.c pterror.c: ${PTSERVER}/pterror.et - ${COMPILE_ET_C} -p ${PTSERVER} pterror + ${COMPILE_ET_C} -p ${srcdir}/${PTSERVER} pterror pterror.h: ${PTSERVER}/pterror.et - ${COMPILE_ET_H} -p ${PTSERVER} pterror + ${COMPILE_ET_H} -p ${srcdir}/${PTSERVER} pterror db_verify.o: pterror.h ptclient.o: pterror.h diff -Nru openafs-1.6.10/src/tvlserver/Makefile.in openafs-1.6.11.1/src/tvlserver/Makefile.in --- openafs-1.6.10/src/tvlserver/Makefile.in 2014-10-09 09:21:13.000000000 +0000 +++ openafs-1.6.11.1/src/tvlserver/Makefile.in 2015-04-13 08:00:35.000000000 +0000 @@ -180,10 +180,10 @@ ${CCRULE} vl_errors.c vl_errors.c: ${VLSERVER}/vl_errors.et - ${COMPILE_ET_C} -p ${VLSERVER} vl_errors + ${COMPILE_ET_C} -p ${srcdir}/${VLSERVER} vl_errors vlserver.h: ${VLSERVER}/vl_errors.et ${VLSERVER}/vlserver.p.h - ${COMPILE_ET_H} -p ${VLSERVER} vl_errors -h vlserver + ${COMPILE_ET_H} -p ${srcdir}/${VLSERVER} vl_errors -h vlserver cnvldb.o: vlserver.h vlclient.o: vlserver.h