Index: trunk/server/common/patches/openafs-afs_conn-overcounts.patch
===================================================================
--- trunk/server/common/patches/openafs-afs_conn-overcounts.patch	(revision 2659)
+++ 	(revision )
@@ -1,81 +1,0 @@
-From 54c0ee608f4afd2b178c9b60eabfc3564293d996 Mon Sep 17 00:00:00 2001
-From: Andrew Deason <adeason@sinenomine.net>
-Date: Sun, 14 Sep 2014 14:10:11 -0500
-Subject: [PATCH] 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
-
-Change-Id: I3a52f8ccef24f01d04c02db0a4b711405360e323
-Reviewed-on: http://gerrit.openafs.org/11464
-Reviewed-by: Benjamin Kaduk <kaduk@mit.edu>
-Reviewed-by: Daria Brashear <shadow@your-file-system.com>
-Tested-by: Benjamin Kaduk <kaduk@mit.edu>
-Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
----
- 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 f452638..4c6fb9a 100644
---- a/src/afs/afs_bypasscache.c
-+++ b/src/afs/afs_bypasscache.c
-@@ -621,6 +621,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 4a9edbd..338e8db 100644
---- a/src/afs/afs_dcache.c
-+++ b/src/afs/afs_dcache.c
-@@ -2398,6 +2398,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;
- 		    }
--- 
-2.2.1
-
Index: trunk/server/common/patches/openafs-d_splice_alias-reference.patch
===================================================================
--- trunk/server/common/patches/openafs-d_splice_alias-reference.patch	(revision 2659)
+++ 	(revision )
@@ -1,92 +1,0 @@
-From b1f23baecb2de72b44cda8bba27615c012a445f1 Mon Sep 17 00:00:00 2001
-From: Marc Dionne <marc.dionne@your-file-system.com>
-Date: Thu, 18 Dec 2014 08:43:22 -0500
-Subject: [PATCH] Linux: d_splice_alias may drop inode reference on error
-
-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.
-
-Change-Id: Id1786ac2227b4d8e0ae801fe59c15a0ecd975bed
----
- acinclude.m4                 |  3 +++
- src/afs/LINUX/osi_vnodeops.c | 29 ++++++++++++++++++++++++++---
- 2 files changed, 29 insertions(+), 3 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 96adde0..19f7092 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -984,6 +984,9 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
- 		 AC_CHECK_LINUX_FUNC([hlist_unhashed],
- 				     [#include <linux/list.h>],
- 				     [hlist_unhashed(0);])
-+		 AC_CHECK_LINUX_FUNC([ihold],
-+				     [#include <linux/fs.h>],
-+				     [ihold(NULL);])
- 		 AC_CHECK_LINUX_FUNC([i_size_read],
- 				     [#include <linux/fs.h>],
- 				     [i_size_read(NULL);])
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index b2ab9d5..cedfef6 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -1612,6 +1612,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:
-@@ -1625,14 +1636,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
--- 
-2.2.1
-
Index: trunk/server/common/patches/openafs-d_u.d_alias.patch
===================================================================
--- trunk/server/common/patches/openafs-d_u.d_alias.patch	(revision 2659)
+++ 	(revision )
@@ -1,324 +1,0 @@
-From 2c9bc3ec349ae550bf60d0c46f15bdabe2b0fd9e Mon Sep 17 00:00:00 2001
-From: Marc Dionne <marc.dionne@your-file-system.com>
-Date: Thu, 18 Dec 2014 06:57:22 -0500
-Subject: [PATCH 1/2] Linux: Move code to reset the root to afs/LINUX
-
-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.
-
-Change-Id: Ia27fca3d8052ead45783cb2332c04fe6e99e5d9f
----
- 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 277b50a..5002af1 100644
---- a/src/afs/LINUX/osi_prototypes.h
-+++ b/src/afs/LINUX/osi_prototypes.h
-@@ -82,6 +82,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 cb4bee1..cd748f1 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);
- 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 a78aaaa..dd943a7 100644
---- a/src/afs/afs_daemons.c
-+++ b/src/afs/afs_daemons.c
-@@ -351,71 +351,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
- 	    }
--- 
-2.2.1
-
-
-From 4ba5cbd90e96edd63bd0178df8ce615c1efe1b2c Mon Sep 17 00:00:00 2001
-From: Marc Dionne <marc.dionne@your-file-system.com>
-Date: Thu, 18 Dec 2014 07:13:46 -0500
-Subject: [PATCH 2/2] Linux: d_alias becomes d_u.d_alias
-
-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.
-
-Change-Id: I711a5a3a89af6e0055381dfd4474ddca2868bb9c
----
- 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 96adde0..e8e238b 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -899,6 +899,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 57f6ea7..497b1ef 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 f0269b3..9dd55b3 100644
---- a/src/cf/linux-test4.m4
-+++ b/src/cf/linux-test4.m4
-@@ -713,7 +713,11 @@ AC_DEFUN([LINUX_D_ALIAS_IS_HLIST], [
- 			[#include <linux/fs.h>],
- 			[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],
- 			[])
-@@ -727,6 +731,9 @@ AC_DEFUN([LINUX_HLIST_ITERATOR_NO_NODE], [
- 			#include <linux/fs.h>],
- 			[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],
--- 
-2.2.1
-
Index: trunk/server/common/patches/openafs-mvid-NULL-deref.patch
===================================================================
--- trunk/server/common/patches/openafs-mvid-NULL-deref.patch	(revision 2659)
+++ 	(revision )
@@ -1,51 +1,0 @@
-From 97ca2bad9577380b10e7179ebecfc2dfa3fe4626 Mon Sep 17 00:00:00 2001
-From: Andrew Deason <adeason@sinenomine.net>
-Date: Mon, 1 Dec 2014 10:23:23 -0600
-Subject: [PATCH] Do not submit: LINUX: Avoid mvid NULL deref in
- check_bad_parent
-
-check_bad_parent dereferences vcp->mvid, assuming it is not NULL (vcp
-is a root vcache here, so mvid refers to the parent fid). However, in
-some situations, vcp->mvid can be NULL.
-
-When we first afs_GetVCache the fid, we try to set mvid by setting
-mvid to the 'dotdot' structure in the volume struct. But we get that
-volume struct from afs_GetVolume, which can fail (at the very least,
-this can fail on network failure when looking up vldb information). If
-it fails, then we do not set the mvid parent. On future lookups for
-the fid, afs_GetVCache will return early for a fastpath, if the vcache
-is already in memory. So, mvid will never get set in such a situation.
-
-We also set the mvid parent fid in afs_lookup if we resolved a
-mountpoint to the root vcache. However, this is skipped if CMValid is
-not set on the vcache, so if CMValid is cleared right after resolving
-the mountpoint (say, perhaps done by some other thread e.g. a callback
-break or other reasons), then the mvid parent fid will not be set.
-
-To avoid crashing in these situations, if vcp->mvid is NULL in
-check_bad_parent, don't check the mvid, and assume it does not match
-(since we don't know what it is).
-
-FIXES 131967
-
-Change-Id: I3550cf5a01811ede17d74770161326667a6e8628
----
- src/afs/LINUX/osi_vnodeops.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/afs/LINUX/osi_vnodeops.c b/src/afs/LINUX/osi_vnodeops.c
-index 9a164ea..959e320 100644
---- a/src/afs/LINUX/osi_vnodeops.c
-+++ b/src/afs/LINUX/osi_vnodeops.c
-@@ -949,7 +949,7 @@ check_bad_parent(struct dentry *dp)
-     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 */
--- 
-2.2.0
-
