Index: /server/common/patches/openafs-enoent.patch
===================================================================
--- /server/common/patches/openafs-enoent.patch	(revision 848)
+++ /server/common/patches/openafs-enoent.patch	(revision 848)
@@ -0,0 +1,72 @@
+Index: osi_vnodeops.c
+===================================================================
+RCS file: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v
+retrieving revision 1.81.2.68
+diff -u -r1.81.2.68 osi_vnodeops.c
+--- src/afs/LINUX/osi_vnodeops.c	7 Oct 2008 03:41:15 -0000	1.81.2.68
++++ src/afs/LINUX/osi_vnodeops.c	7 Oct 2008 16:51:47 -0000
+@@ -789,11 +789,13 @@
+     cred_t *credp = NULL;
+     struct vcache *vcp, *pvcp, *tvc = NULL;
+     int valid;
++    struct afs_fakestat_state fakestate;
+ 
+ #ifdef AFS_LINUX24_ENV
+     lock_kernel();
+ #endif
+     AFS_GLOCK();
++    afs_InitFakeStat(&fakestate);
+ 
+     if (dp->d_inode) {
+ 
+@@ -805,8 +807,28 @@
+ 
+ 	if (vcp->mvstat == 1) {         /* mount point */
+ 	    if (vcp->mvid && (vcp->states & CMValid)) {
+-		/* a mount point, not yet replaced by its directory */
+-		goto bad_dentry;
++		int tryEvalOnly = 0;
++		int code = 0;
++		struct vrequest treq;
++
++		credp = crref();
++		code = afs_InitReq(&treq, credp);
++		if (
++#ifdef AFS_DARWIN_ENV
++		    (strcmp(dp->d_name.name, ".DS_Store") == 0) ||
++		    (strcmp(dp->d_name.name, "Contents") == 0) ||
++#endif
++		    (strcmp(dp->d_name.name, ".directory") == 0)) {
++		    tryEvalOnly = 1;
++		}
++		if (tryEvalOnly)
++		    code = afs_TryEvalFakeStat(&vcp, &fakestate, &treq);
++		else
++		    code = afs_EvalFakeStat(&vcp, &fakestate, &treq);
++		if ((tryEvalOnly && vcp->mvstat == 1) || code) {
++		    /* a mount point, not yet replaced by its directory */
++		    goto bad_dentry;
++		}
+ 	    }
+ 	} else
+ 	    if (*dp->d_name.name != '/' && vcp->mvstat == 2) /* root vnode */
+@@ -870,6 +892,7 @@
+     /* Clean up */
+     if (tvc)
+ 	afs_PutVCache(tvc);
++    afs_PutFakeStat(&fakestate);
+     AFS_GUNLOCK();
+     if (credp)
+ 	crfree(credp);
+@@ -884,7 +907,10 @@
+     return valid;
+ 
+   bad_dentry:
+-    valid = 0;
++    if (have_submounts(dp))
++	valid = 1;
++    else 
++	valid = 0;
+     goto done;
+ }
+ 
Index: rver/common/patches/openafs-jhutz.patch
===================================================================
--- /server/common/patches/openafs-jhutz.patch	(revision 847)
+++ 	(revision )
@@ -1,85 +1,0 @@
-===================================================================
-RCS file: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v
-retrieving revision 1.81.2.64
-retrieving revision 1.81.2.63
-diff -u -r1.81.2.64 -r1.81.2.63
---- openafs/src/afs/LINUX/osi_vnodeops.c	2008/04/15 12:29:54	1.81.2.64
-+++ openafs/src/afs/LINUX/osi_vnodeops.c	2008/04/02 18:27:13	1.81.2.63
-@@ -22,7 +22,7 @@
- #include "afs/param.h"
- 
- RCSID
--    ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.64 2008/04/15 12:29:54 shadow Exp $");
-+    ("$Header: /cvs/openafs/src/afs/LINUX/osi_vnodeops.c,v 1.81.2.63 2008/04/02 18:27:13 shadow Exp $");
- 
- #include "afs/sysincludes.h"
- #include "afsincludes.h"
-@@ -803,14 +803,8 @@
- 	if (vcp == afs_globalVp)
- 	    goto good_dentry;
- 
--	if (vcp->mvstat == 1) {         /* mount point */
--	    if (vcp->mvid && (vcp->states & CMValid)) {
--		/* a mount point, not yet replaced by its directory */
--		goto bad_dentry;
--	    }
--	} else
--	    if (*dp->d_name.name != '/' && vcp->mvstat == 2) /* root vnode */
--		check_bad_parent(dp);	/* check and correct mvid */
-+	if (*dp->d_name.name != '/' && vcp->mvstat == 2)	/* root vnode */
-+	    check_bad_parent(dp);	/* check and correct mvid */
- 
- #ifdef notdef
- 	/* If the last looker changes, we should make sure the current
-===================================================================
-RCS file: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v
-retrieving revision 1.50.2.21
-retrieving revision 1.50.2.20
-diff -u -r1.50.2.21 -r1.50.2.20
---- openafs/src/afs/VNOPS/afs_vnop_lookup.c	2008/04/15 12:29:56	1.50.2.21
-+++ openafs/src/afs/VNOPS/afs_vnop_lookup.c	2008/03/07 17:34:08	1.50.2.20
-@@ -18,7 +18,7 @@
- #include "afs/param.h"
- 
- RCSID
--    ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.50.2.21 2008/04/15 12:29:56 shadow Exp $");
-+    ("$Header: /cvs/openafs/src/afs/VNOPS/afs_vnop_lookup.c,v 1.50.2.20 2008/03/07 17:34:08 shadow Exp $");
- 
- #include "afs/sysincludes.h"	/* Standard vendor system headers */
- #include "afsincludes.h"	/* Afs-based standard headers */
-@@ -1120,7 +1120,6 @@
-     register afs_int32 code;
-     register afs_int32 bulkcode = 0;
-     int pass = 0, hit = 0;
--    int force_eval = afs_fakestat_enable ? 0 : 1;
-     long dirCookie;
-     extern afs_int32 afs_mariner;	/*Writing activity to log? */
-     afs_hyper_t versionNo;
-@@ -1443,6 +1442,8 @@
-     }				/* sub-block just to reduce stack usage */
- 
-     if (tvc) {
-+	int force_eval = afs_fakestat_enable ? 0 : 1;
-+
- 	if (adp->states & CForeign)
- 	    tvc->states |= CForeign;
- 	tvc->parentVnode = adp->fid.Fid.Vnode;
-@@ -1463,9 +1464,6 @@
- 		force_eval = 1;
- 	    ReleaseReadLock(&tvc->lock);
- 	}
--	if (tvc->mvstat == 1 && (tvc->states & CMValid) && tvc->mvid != NULL)
--	  force_eval = 1; /* This is now almost for free, get it correct */
--
- #if defined(UKERNEL) && defined(AFS_WEB_ENHANCEMENTS)
- 	if (!(flags & AFS_LOOKUP_NOEVAL))
- 	    /* don't eval mount points */
-@@ -1591,7 +1589,7 @@
- 	     * rather than the vc of the mount point itself.  we can still find the
- 	     * mount point's vc in the vcache by its fid. */
- #endif /* UKERNEL && AFS_WEB_ENHANCEMENTS */
--	    if (!hit && force_eval) {
-+	    if (!hit) {
- 		osi_dnlc_enter(adp, aname, tvc, &versionNo);
- 	    } else {
- #ifdef AFS_LINUX20_ENV
Index: /server/fedora/specs/openafs.spec.patch
===================================================================
--- /server/fedora/specs/openafs.spec.patch	(revision 847)
+++ /server/fedora/specs/openafs.spec.patch	(revision 848)
@@ -16,5 +16,5 @@
 +Patch1000: openafs-scripts.patch
 +Patch1001: openafs-2626.patch
-+Patch1002: openafs-jhutz.patch
++Patch1002: openafs-enoent.patch
 +Patch1003: openafs-fill-inode.patch
 +
@@ -28,5 +28,5 @@
 +%patch1000 -p1 -b .scripts
 +%patch1001 -p1 -b .2626
-+%patch1002 -p1 -b .jhutz
++%patch1002 -p0 -b .enoent
 +%patch1003 -p0 -b .fill-inode
  
