]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
fakestat-access-for-nautilus-20080307
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Fri, 7 Mar 2008 17:30:19 +0000 (17:30 +0000)
committerDerrick Brashear <shadow@dementia.org>
Fri, 7 Mar 2008 17:30:19 +0000 (17:30 +0000)
LICENSE IPL10

in order that nautilus' .directory checks can work without stat()ing every damn
thing, do what we do for the mac, basically.

src/afs/VNOPS/afs_vnop_access.c
src/afs/VNOPS/afs_vnop_lookup.c

index 5677a097ce086d4e827b751393ce5b204693d41a..a5cd79914524fc5270f32ea51b21b14a60e393d1 100644 (file)
@@ -209,7 +209,16 @@ afs_access(OSI_VC_DECL(avc), register afs_int32 amode,
     if ((code = afs_InitReq(&treq, acred)))
        return code;
 
-    code = afs_EvalFakeStat(&avc, &fakestate, &treq);
+    if (afs_fakestat_enable && avc->mvstat == 1) {
+       code = afs_TryEvalFakeStat(&avc, &fakestate, &treq);
+        if (code == 0 && avc->mvstat == 1) {
+           afs_PutFakeStat(&fakestate);
+           return 0;
+        }
+    } else {
+       code = afs_EvalFakeStat(&avc, &fakestate, &treq);
+    }
+
     if (code) {
        afs_PutFakeStat(&fakestate);
        return code;
index 32f0e882432e480191535699a6c5b82a50411a78..59ed1f0cc8ccb3c65594cc9d369482f91185c3aa 100644 (file)
@@ -1228,6 +1228,11 @@ afs_lookup(OSI_VC_DECL(adp), char *aname, struct vcache **avcp, struct AFS_UCRED
     ndp->ni_dvp = AFSTOV(adp);
 #endif /* AFS_OSF_ENV */
 
+    if (afs_fakestat_enable && adp->mvstat == 1) {
+       if (strcmp(aname, ".directory") == 0)
+           tryEvalOnly = 1;
+    }
+
 #if defined(AFS_DARWIN_ENV)
     /* Workaround for MacOSX Finder, which tries to look for
      * .DS_Store and Contents under every directory.